1.java.lang.Object里有equals() 和hashCode()
 java.lang.Comparable(interface)里有compareTo()
 java.util.Comparator(interface)里有equals(),compare()2.Wrapper Classes和String都重写了equals() 和hashCode(),IMPLEMENTED compareTo() & equals(),compare(),所以可以直接用。除此之外的自定义CLASS,如果要做Object比较,要重写or IMPLEMENTS其中的某些方法。3.一般是比较同一个CLASS的不同Object。如果Object存放在数组或集合中,排序前要先比较。4.如果一个CLASS IMPLEMENTED Comparable,一定要IMPLEMENTS compareTo()
5.如果一个CLASS 没有 IMPLEMENT Comparable ,但仍想排序,可以implements Comparator,一定要implements equals() & compare(). 
如果没有implements equals(),也不出错,因为有Object的equals().
此处不涉及hashcode()6.如果是基于HASH的结构,如HASHSET,HASHMAP等等,重写equal()的同时,一定要重写hashCode()----overriding java.lang.Object里的equals() & hashCode()

解决方案 »

  1.   

    1.职员同时使用name,age,id来进行排序(例如:当name相等的时候,接下来对比age,如果相等继续尝试id)
    2. 深入了解下equals()方法和compare()/compareTo()方法为什么必须保持一致?怎样保持一致?public class Employee implements Comparable<Employee> {
    private int empId;
    private String name;
    private int age;.....public class EmpSortByName implements Comparator<Employee>{ public int compare(Employee o1, Employee o2) {
    return o1.getName().compareTo(o2.getName());
    }
    }