加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 基于一行数据对二维数组进行排序

发布时间:2020-12-15 08:48:36 所属栏目:Java 来源:网络整理
导读:我不确定这个标题是否正确地表明了我想要问的问题.假设我有一个二维int数组,如下所示: int[][] x={{1,7,6},{2,4,8}}; 现在我想按升序对第一行进行排序,第二行中的数据必须在排序后位于同一列中,即排序后,数组应如下所示: x={{1,6,7},8,4}} 做正确的方法是
我不确定这个标题是否正确地表明了我想要问的问题.假设我有一个二维int数组,如下所示:

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

现在我想按升序对第一行进行排序,第二行中的数据必须在排序后位于同一列中,即排序后,数组应如下所示:

x={{1,6,7},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,8},4}]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读