You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何按二维数组指定行排序且另一行保持元素配对?

Java二维数组按指定行配对排序实现方案

问题核心原因

你直接调用Arrays.sort(arr[1])仅对第二行独立排序,不会关联第一行同列的配对元素,因此会丢失原始的对应关系。

实现思路

把同一列的两个元素作为绑定整体,通过索引排序的方式保证配对关系不变,排序依据为第二行的元素值:

  1. 初始化和列数等长的索引数组,存储所有列的原始下标
  2. 对索引数组自定义排序,排序规则为对比两个索引对应第二行元素的大小
  3. 按照排序后的索引顺序,重组两行的元素即可

完整可运行代码

import java.util.Arrays;
import java.util.Comparator;

public class SortTwoRowArray {
    public static void main(String[] args) {
        // 初始化原始数组
        int[][] arr = new int[2][8];
        arr[0] = new int[]{1, 1, 3, 1, 5, 3, 7, 1};
        arr[1] = new int[]{5, 2, 4, 8, 3, 7, 5, 2};
        int columnNum = arr[0].length;

        // 构建索引数组
        Integer[] columnIndexes = new Integer[columnNum];
        for (int i = 0; i < columnNum; i++) {
            columnIndexes[i] = i;
        }

        // 按第二行元素值升序排序索引
        Arrays.sort(columnIndexes, Comparator.comparingInt(index -> arr[1][index]));

        // 按排序后的索引重组数组
        int[] newRow0 = new int[columnNum];
        int[] newRow1 = new int[columnNum];
        for (int i = 0; i < columnNum; i++) {
            newRow0[i] = arr[0][columnIndexes[i]];
            newRow1[i] = arr[1][columnIndexes[i]];
        }
        arr[0] = newRow0;
        arr[1] = newRow1;

        // 输出结果
        System.out.println("第一行:" + Arrays.toString(arr[0]));
        System.out.println("第二行:" + Arrays.toString(arr[1]));
    }
}

运行输出

第一行:[1, 1, 5, 3, 1, 7, 3, 1]
第二行:[2, 2, 3, 4, 5, 5, 7, 8]

内容的提问来源于stack exchange,提问作者Young

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:48:00