我是Java 8的新手,我只想按名称排序。但条件是:如果名称重复,则应根据年龄对其进行排序。
例如我的输入是
tarun 28
arun 29
varun 12
arun 22
并且输出应该是
arun 22
arun 29
tarun 28
varun 12
但是我得到类似
varun 12
arun 22
tarun 28
arun 29
表示仅按年龄或名称排序。
这是实现的代码:
POJO类:
class Person {
String fname;
int age;
public Person() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public Person(String fname, int age) {
this.fname = fname;
this.age = age;
}
@Override
public String toString() {
return fname + age;
}
}
测试类别:
public class Test {
public static void main(String[] args) {
List persons = new ArrayList<>();
persons.add(new Person("tarun", 28));
persons.add(new Person("arun", 29));
persons.add(new Person("varun", 12));
persons.add(new Person("arun", 22));
Collections.sort(persons, new Comparator() {
@Override
public int compare(Person t, Person t1) {
return t.getAge() - t1.getAge();
}
});
System.out.println(persons);
}
}