我有一个对象列表,可以按字母顺序对属性进行排序。我无法覆盖此对象上的equals方法,因为它是一个生成的类,我的实现将在下一代中被删除。 我想我会在工具箱类中实现这种类型。 有没有办法不重新发明轮子?
答案 0 :(得分:4)
使用自定义Comparator
class A{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public A() {
}
public A(String name) {
this.name = name;
}
}
List<A> aList = new ArrayList<A>();
aList.add(new A("abc"));
aList.add(new A("sda"));
aList.add(new A("aaa"));
Collections.sort(aList,new Comparator<A>() {
public int compare(A o1, A o2) {
return o1.getName().compareTo(o2.getName());
}
});
答案 1 :(得分:2)
类似的东西:
class Foo {
public String field;
}
public static void main(String[] args) {
List<Foo> foos = new ArrayList<Foo>();
....
Collections.sort(foos, new Comparator<Foo>() {
@Override
public int compare(Foo o1, Foo o2) {
return o1.field.compareTo(o2.field);
}
});
}
答案 2 :(得分:0)
您可以查看API。您只需要实现比较器来比较您的属性
答案 3 :(得分:0)
您可以使用比较器,我们说您正在使用字母名称(myList
)对Person
的列表(getName()
)进行排序。
List<Person> myList = new ArrayList<Person>(keys);
Collections.sort(myList, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
String s1 = p1.getName();
String s2 = p2.getName();
return s1.compareTo(s2);
}
});