我有一个自定义类,如下所示。
class customclass {
int a;
int b;
}
我已经把这个类的对象放在了一个链表中。
LinkedList<customclass> ll = new LinkedList<customclass>();
customclass c1= new customclass();
c1.a=1;
c1.b=5;
ll.add(c1);
customclass c2= new customclass();
c2.a=10;
c2.b=5;
ll.add(c2);
customclass c3= new customclass();
c2.a=11;
c2.b=15;
ll.add(c3);
如何使用Collections.sort根据类customclass的每个对象中的"a"值对列表进行排序。
首先,请正确命名您的类。
第二,请使用适当的封装。
所以我们有:
class Customclass {
private final int a;
private final int b;
public Customclass(int a, int b) {
this.a = a;
this.b = b;
}
public int getA() {
return a;
}
public int getB() {
return b;
}
}
现在我们只需要进行分类:
final List<Customclass> ll = new LinkedList<>();
Collections.sort(ll, Comparator.comparing(Customclass::getA));
请注意,我使用菱形表示法<>
来避免两次声明List
的类型,而且我在LHS上使用接口List
,而不是实现LinkedList
。
Collections.sort(l1, new Comparator<customclas>() {
@Override
public int compare(customclas o1, customclas o2) {
if (o1.a < o2.a) return -1;
else if (o1.a > o2.a) return 1;
else return 0;
}
});
Comparator<customclass> comparator = new Comparator<customclass>() {
public int compare(customclass c1,customclass c2) {
//return c2.a - c1.a;
// use your logic
// updating as per borris
Integer.compare(c1.a,c2.a);
}
};
Collections.sort(ll, comparator);