我有一个包含4个成员的java对象列表。
int id;
String name;
String age;
int order;
我想对w.r.t名称
这个对象的列表进行排序答案 0 :(得分:4)
要么实现Comparator
,请执行以下操作:
public static void main(String[] args) throws IOException {
List<MyObject> list = new ArrayList<MyObject>();
// add your objects to the list
Collections.sort(list, new Comparator<MyObject>() {
@Override
public int compare(MyObject o1, MyObject o2) {
return o1.name.compareTo(o2.name);
}
});
}
或者您可以在Comparable
上实施MyObject
界面:
class MyObject implements Comparable<MyObject> {
int id;
String name;
String age;
int order;
@Override
public int compareTo(MyObject o) {
return name.compareTo(o.name);
}
}
public static void main(String[] args) throws IOException {
....
Collections.sort(list); // with the comparable interface
}
答案 1 :(得分:2)
您可以创建一个比较器,通过名称比较该类型的2个对象,并使用此比较器进行排序:
private static class MyComparator implements Comparator<MyType>
{
@Override
public int compare(MyType o1, MyType o2)
{
return o1.getName().compareTo(o2.getName());
}
}
然后排序:
Collections.sort(list, myComparator);
答案 2 :(得分:0)
查看Arrays.sort。
答案 3 :(得分:0)
代表 myString 的值对所有成员/州进行排序,即如果myString是name,则按名称排序,反之亦然。
Collections.sort(list, new Comparator<com.MyObject>() {
public int compare(com.MyObject object1, com.MyObject object2) {
if(myString.equalsIgnoreCase("name")){
return object1.getName().compareTo(object2.getName());
}else if(myString.equalsIgnoreCase("age")){
return object1.getAge().compareTo(object2.getAge());
}else{
return object1.getOrder() - object2.getOrder();
}
}
});