I am new to Java 8. I just want to sort by name. But the condition: if there are duplicate names, then it should be sorted according to age.
For example, my input
tarun 28
arun 29
varun 12
arun 22
and the exit should be
arun 22
arun 29
tarun 28
varun 12
But I get something like
varun 12
arun 22
tarun 28
arun 29
Means that it is sorted only by age or name.
This is the code that is implemented:
POJO Class:
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;
}
}
Testing Class:
public class Test {
public static void main(String[] args) {
List<Person> 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<Person>() {
@Override
public int compare(Person t, Person t1) {
return t.getAge() - t1.getAge();
}
});
System.out.println(persons);
}
}
source
share