java - 根据一行数据对二维数组进行排序

标签 java arrays

我不确定标题是否正确地暗示了我想问的问题。假设我有一个二维 int 数组,如下所示:

int[][] x={{1,7,6},{2,4,8}};

现在我想对第一行进行升序排序,排序后第二行的数据必须在同一列,即排序后的数组应该是这样的:

x={{1,6,7},{2,8,4}}

正确的做法是什么?

最佳答案

这可以通过实现您自己的排序例程来完成,但更好的方法是重构。

尝试将数据封装为数字对的数组,每一对都包装在自己的对象中。然后,您可以对第一个值进行排序并访问任一值。

class Pair<T extends Comparable<T>> implements Comparable<Pair<T>> {
  final T a;
  final T b;

  public Pair ( T a, T b ) {
    this.a = a;
    this.b = b;
  }

  @Override
  public int compareTo(Pair<T> o) {
    // Comparison on 'a' only.
    return a.compareTo(o.a);
  }

  @Override
  public String toString () {
    return "{" + a + "," + b + "}";
  }
}

public static void main(String args[]) {
  Pair[] pairs = {
    new Pair(1,2),
    new Pair(7,4),
    new Pair(6,8),
  };
  System.out.println("Before: "+Arrays.toString(pairs));
  Arrays.sort(pairs);
  System.out.println("After: "+Arrays.toString(pairs));
}

打印

Before: [{1,2}, {7,4}, {6,8}]
After: [{1,2}, {6,8}, {7,4}]

关于java - 根据一行数据对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13841028/

相关文章:

java - Eclipse RCP 消息控制台 : How to allow user to input and handle this listener?

python - 没有默认方法的对寄存器数组进行排序

python - NumPy 二维数组 : selecting indices in a circle

java - 如何为多个 ImageView 创建一个更新函数?

java - 我们可以将安全领域添加到 glassfish-resources

java - 为什么要这么写一个迭代器呢?

java - 更改 JComboBox 的内容

java - 如何用R语言打印java.util.Date类型数组的所有元素的值

javascript - 当尝试发送给用户数组时,meteor.js email.send 不起作用

arrays - 将System.UInt16数组转换为字符串