正如标题所示,我有一个由整数对(int ai 和 int bi)组成的列表。我想仅基于 int a 对该列表进行排序,同时保留成对关系。我想知道是否有一种有效的方法可以使用 Java 的一些标准库来做到这一点。提前致谢!
编辑:我的确切实现是ArrayList<ArrayList<Integer>>
其中每个ArrayList<Integer>
都有两个整数(ai 和 bi)。很抱歉有任何混淆。
使用Collectionssort()
或Arrayssort()
方法,该方法采用 aComparator
并使用自定义比较器,该比较器仅检查对中的第一个整数。
像这样的东西(大致取决于您的确切类型):
Collections.sort(myList, new Comparator<IntegerPair>() {
@Override public int compare(IntegerPair x, IntegerPair y) {
return x.first - y.first;
}
});
由于排序算法是稳定的(根据 Javadocs),您的列表将根据您的描述进行排序。
为您的整数对实现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
我建议创建一个表示整数对的类。这个类应该实现 Comparable。使用 sort() 对其进行排序。
使用已经定义的 Integer 比较可能更安全一些:
Collections.sort(myList, new Comparator<IntegerPair>() {
@Override public int compare(IntegerPair x, IntegerPair y) {
return Integer.compare(x.first, y.first);
}
});