public class ArrayListComparatorVsComparable {
public static void main(String[] args) {
List<Dog> list = new ArrayList<>();
list.add(new Dog(10, "Tommy"));
list.add(new Dog(12, "Lacy"));
list.add(new Dog(8, "Tammy"));
list.add(new Dog(6, "Roger"));
System.out.println("Default order of List = " + list);
//list.forEach(d -> System.out.println(d));
Collections.sort(list);
System.out.println("Sorting order of Age = " + list);
Collections.sort(list, new Dog());
System.out.println("Sorting order of Name = " + list);
}
}
class Dog implements Comparable<Dog>, Comparator<Dog> {
private int age;
private String name;
@Override
public int compareTo(Dog d) {
return this.age - d.age;
}
@Override
public int compare(Dog d1, Dog d2) {
return d1.name.compareTo(d2.name);
}
public int getAge() {
return age;
}
public Dog() {
}
public Dog(int age, String name) {
this.age = age;
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Dog [age=" + age + ", name=" + name + "]";
}
}