如果列表项在一个变量中具有相同的值,则java比较列表使用不同的变量
我有一个具有name(string)和age(int)属性的类Person:
public class Person {
private String name;
private int age;
public Hero(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
我创建了一个人员列表,并使用年龄对他们进行了比较
List<Person> persons = new ArrayList<>();
persons.add("Andrew", 18);
persons.add("Barry", 25);
persons.add("Cynthia", 33);
persons.add("Darwin", 33);
Collections.sort(persons, new Comparator<Person>() {
@Override
public int compare(Person lhs, Person rhs) {
return lhs.getAge() < rhs.getAge() ? -1 : lhs.getAge() == lhs.getAge() ? 0 : 1;
}
});
如果两个项目的年龄相等,如何使用名称进行比较
# 1 楼答案
从Java8开始,创建自定义
Comparator
要容易得多,并且可以比较多个字段您可以使用以下代码:
就这样
您可以使用它对收藏进行如下排序: