Java Comparable and Comparator
Comparable Interface
If you want to sort some user defined Objects, then you need to implement interface Comparable or Comparator
class Student implements Comparable{
public String name;
public int compareTo(Student other){
// 3 2 1
return - name.compareTo(other.name);
}
public Student(String name){
this.name = name;
}
public void print(){
Print.p("name=" + name);
}
}
Comparator Interface
class Person{
public String name;
public Person(String name){
this. name = name;
}
public void print(){
Print.p("name=" + name);
}
}
class ComPerson implements Comparator{
public int compare(Person s1, Person s2){
return s1.name.compareTo(s2.name);
}
}
{
List list = new ArrayList<>();
list.add(new Student("David"));
list.add(new Student("Michael"));
Collections.sort(list);
for(Student s : list){
s.print();
}
}
{
List list = new ArrayList<>();
list.add(new Person("David"));
list.add(new Person("Michelle"));
list.add(new Person("Joyce"));
Collections.sort(list, new ComPerson());
Print.fl();
for(Person s : list){
s.print();
}
}