用Java中的第一个值排序一对数组

时间:2016-07-24 06:08:47

标签: java arrays

我有一个简单的对类,并创建了一个数组。

private static class Pair
{
    private String l;
    private String e;
}

我想知道是否可以对一对数组进行排序,例如: (a, de), (g, e), (dde, gh) 仅仅是对中的第一个元素。创建结果:(a, de), (dde, gh), (g,e)我知道这在c ++中是可行的,但我是Java的新手并且已经在线搜索了几个小时的解决方案。我读过你可以使用比较器,但我仍然不确定它是如何工作的。任何建议将非常感谢。谢谢!

3 个答案:

答案 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

这两个选项之间的选择取决于您是否要修改ComparableComparator需要它,Comparable没有),以及您是否可以有不同的可能排序({{ 1}}允许只使用一个排序,Comparator允许定义任意数量的排序。当然,您也可以在Comparable接口的实现中组合这些方法并实现默认排序,但也可以使用Comparator的其他排序。