使用集合进行整数排序,使用Java中的自定义类

时间:2015-10-08 08:07:58

标签: java sorting collections

例如:

class A{
    public int a;
    public String b;

    public A(int a, String b){
        this.a = a;
        this.b = b;
    }
}


main(){
    List<A> list = new Arraylist<>();
    list.add(new A(5, "abc"));
    list.add(new A(1, "aee"));
    list.add(new A(3, "adf"));
    list.add(new A(6, "aad"));
    list.add(new A(2, "xx"));
}

有没有办法使用list中的integer按升序对此A class进行排序。我已经尝试了

Collection.sort(list)但是出现了一些语法错误。我做错了什么。

4 个答案:

答案 0 :(得分:1)

您需要自定义Comparator实施:

Collections.sort(list, new Comparator<A>() {
    public int compare(A first, A second) {
        return Integer.compare(first.a, second.a);
    }
});

答案 1 :(得分:1)

使用Java8 List.sort和比较器的lambda表达式,您可以写:

list.sort((a1,a2) -> a1.a - a2.a);

答案 2 :(得分:0)

  

使用自定义Comparator

Collections.sort(list, new Comparator<A>() {

                @Override
                public int compare(A o1, A o2) {

                if(o1.a==o2.a){
                    return 0;
                }else {
                   return o1.a>o2.a?1:-1;
                }
              }

            });

答案 3 :(得分:0)

    List<A> listElements = new ArrayList<>();
    listElements.add(new A(5, "abc"));
    listElements.add(new A(1, "aee"));
    listElements.add(new A(3, "adf"));
    listElements.add(new A(6, "aad"));
    listElements.add(new A(2, "xx"));
    //Sorting
    Collections.sort(listElements, new Comparator<Pourtest.A>() {
        @Override
        public int compare(A o1, A o2) {
            return Integer.compare(o1.a, o2.a);
        }
    });
    //Verify
    for (A listElement : listElements) {
        System.out.println(listElement.a);
    }