我有一个简单的对类,并创建了一个数组。
private static class Pair
{
private String l;
private String e;
}
我想知道是否可以对一对数组进行排序,例如:
(a, de), (g, e), (dde, gh)
仅仅是对中的第一个元素。创建结果:(a, de), (dde, gh), (g,e)
我知道这在c ++中是可行的,但我是Java的新手并且已经在线搜索了几个小时的解决方案。我读过你可以使用比较器,但我仍然不确定它是如何工作的。任何建议将非常感谢。谢谢!
答案 0 :(得分:3)
使用内联自定义比较器:
Arrays.sort(pairArray, new Comparator<Pair>() {
@Override
public int compare(Pair p1, Pair p2) {
return p1.getL().compareTo(p2.getL());
}
});
答案 1 :(得分:2)
一般方法是:
Arrays.sort(myArray, new Comparator<Pair>() {
@Override
public int compare(Pair p1, Pair p2) {
return p1.l.compareTo(p2.l);
}
});
Java 8使lambdas变得更简单:
Arrays.sort(myArray, (p1, p2) -> p1.l.compareTo(p2.l));
答案 2 :(得分:1)
除了Tim Biegeleisen的回答之外,还有一个选项:make Comparable
实现private static class Pair implements Comparable<Pair>
{
private String l;
private String e;
int compareTo(Pair that) {
return this.l.compareTo(that.l);
}
}
List<Pair> pairList;
Collections.sort(pairList);
界面:
Pair
这两个选项之间的选择取决于您是否要修改Comparable
(Comparator
需要它,Comparable
没有),以及您是否可以有不同的可能排序({{ 1}}允许只使用一个排序,Comparator
允许定义任意数量的排序。当然,您也可以在Comparable
接口的实现中组合这些方法并实现默认排序,但也可以使用Comparator
的其他排序。