Comparable and Comparator
Comparable
  1. public class Car implements Comparable<Car>
  2. {
  3. private String maker;
  4. private String color;
  5.  
  6. public Car(String maker, String color)
  7. {
  8. this.maker = maker;
  9. this.color = color;
  10. }
  11.  
  12. public int compareTo(Car c)
  13. {
  14. return maker.compareTo(c.maker);
  15. }
  16.  
  17. public static void main(String args[])
  18. {
  19. Car c = new Car("Buick", "White");
  20. Car c2 = new Car("Honda", "Blue");
  21.  
  22. System.out.println(c.compareTo(c2));
  23.  
  24. if(c.compareTo(c2) < 0)
  25. System.out.println("Less than ...");
  26. }
  27. }
  1. import java.util.*;
  2.  
  3. public class Car implements Comparable<Car>
  4. {
  5. private String maker;
  6. private String color;
  7.  
  8. public Car(String maker, String color)
  9. {
  10. this.maker = maker;
  11. this.color = color;
  12. }
  13.  
  14. public int compareTo(Car c)
  15. {
  16. //System.out.println(maker+" - "+c.maker+" "+maker.compareTo(c.maker));
  17. return maker.compareTo(c.maker);
  18. }
  19.  
  20. public String toString()
  21. {
  22. return maker+": "+color;
  23. }
  24.  
  25. public static void main(String args[])
  26. {
  27. PriorityQueue<Car> q = new PriorityQueue<Car>();
  28.  
  29. q.add(new Car("Buick", "White"));
  30. q.add(new Car("Honda", "Blue"));
  31. q.add(new Car("Accord", "Blue"));
  32. q.add(new Car("Lincoln", "White"));
  33.  
  34. System.out.println(q);
  35.  
  36. //poll objects in the queue by priority
  37. for(int i = 0, len = q.size(); i < len; i++)
  38. System.out.println(q.poll());
  39. }
  40. }
  1. import java.util.*;
  2.  
  3. public class Car implements Comparable<Car>
  4. {
  5. private String maker;
  6. private String color;
  7.  
  8. public Car(String maker, String color)
  9. {
  10. this.maker = maker;
  11. this.color = color;
  12. }
  13.  
  14. public int compareTo(Car c)
  15. {
  16. //System.out.println(maker+" - "+c.maker+" "+maker.compareTo(c.maker));
  17. return maker.compareTo(c.maker);
  18. }
  19.  
  20. public String toString()
  21. {
  22. return maker+": "+color;
  23. }
  24.  
  25. public static void main(String args[])
  26. {
  27. SortedSet<Car> s = new TreeSet<Car>();
  28.  
  29. s.add(new Car("Buick", "White"));
  30. s.add(new Car("Honda", "Blue"));
  31. s.add(new Car("Accord", "Blue"));
  32. s.add(new Car("Lincoln", "White"));
  33.  
  34. System.out.println(s);
  35. }
  36. }
Comparator
  1. import java.util.*;
  2.  
  3. public class Car
  4. {
  5. private String maker;
  6. private String color;
  7.  
  8. public Car(String maker, String color)
  9. {
  10. this.maker = maker;
  11. this.color = color;
  12. }
  13.  
  14. public String toString()
  15. {
  16. return maker+": "+color;
  17. }
  18.  
  19. public String getMaker()
  20. {
  21. return maker;
  22. }
  23.  
  24. public String getColor()
  25. {
  26. return color;
  27. }
  28. }
  1. import java.util.*;
  2.  
  3. public class CarComparator implements Comparator
  4. {
  5. public int compare(Car c1, Car c2)
  6. {
  7. return (c1.getMaker().compareTo(c2.getMaker()));
  8. }
  9. }
  1. import java.util.*;
  2.  
  3. public class Main
  4. {
  5. public static void main(String args[])
  6. {
  7. ArrayList<Car> l = new ArrayList<Car>();
  8.  
  9. //add
  10. l.add(new Car("Buick", "White"));
  11. l.add(new Car("Honda", "Blue"));
  12. l.add(new Car("Lincoln", "White"));
  13. l.add(new Car("Accord", "Blue"));
  14.  
  15. System.out.println(l);
  16.  
  17. //sort by comparator
  18. Collections.sort(l, new CarComparator());
  19.  
  20. System.out.println(l);
  21. }
  22. }
Reference
  • Geekforgeek