1

正如标题所示,我有一个由整数对(int ai 和 int bi)组成的列表。我想仅基于 int a 对该列表进行排序,同时保留成对关系。我想知道是否有一种有效的方法可以使用 Java 的一些标准库来做到这一点。提前致谢!

编辑:我的确切实现是ArrayList<ArrayList<Integer>>其中每个ArrayList<Integer>都有两个整数(ai 和 bi)。很抱歉有任何混淆。

4

4 回答 4

1

使用Collectionssort()Arrayssort()方法,该方法采用 aComparator并使用自定义比较器,该比较器仅检查对中的第一个整数。

像这样的东西(大致取决于您的确切类型):

Collections.sort(myList, new Comparator<IntegerPair>() {
  @Override public int compare(IntegerPair x, IntegerPair y) {
    return x.first - y.first;
  }
});

由于排序算法是稳定的(根据 Javadocs),您的列表将根据您的描述进行排序。

于 2012-05-04T20:46:20.513 回答
0

为您的整数对实现http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html并使用 http://docs.oracle.com/javase/6/ 中的 sort( ) docs/api/java/util/Collections.html

于 2012-05-04T20:41:09.710 回答
0

我建议创建一个表示整数对的类。这个类应该实现 Comparable。使用 sort() 对其进行排序。

于 2012-05-04T20:41:21.287 回答
0

使用已经定义的 Integer 比较可能更安全一些:

Collections.sort(myList, new Comparator<IntegerPair>() {
    @Override public int compare(IntegerPair x, IntegerPair y) {
        return Integer.compare(x.first, y.first);
    }
});
于 2016-02-23T03:37:02.340 回答