例如:
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)
但是出现了一些语法错误。我做错了什么。
答案 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);
}