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()
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()
解决方案 »
- java中数组赋值后共用内存吗?
- OpenSwing 怎么用?
- 100分求解
- 救命啊,javascript的bug
- 我用java写的遗传算法的严重问题,程序没错,但不知道为什么结果总和预想的不同,实在是困惑,请帮忙啊!!!!
- 急求问题!多谢各位了!
- applet中图片的ID和坐标怎样保存MS数据库
- 一个让人迷惑的问题!!!!
- 如何在没下载图片前得到图片的大小信息
- 有一个关于Win2000,Weblogic,Java,Struts,Oracle9i的项目,急切寻求开发高手,鼎力协助!!只要求能够快速操作的,有意合作者,请速与我
- JAVA中如何通过IP,用户名,密码连接到远程计算机,并读取,运行文件。
- MySQL语句执行问题,在线求助!
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());
}
}