hashSet、treeset应用的小发现
简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相等
注意,如果要把一个对象放入HashSet中,重写该对象对应类的equals方法,也应该重写其hashCode()方法。其规则是如果两个对象通过equals方法比较返回true时,其hashCode也应该相同。另外,对象中用作equals比较标准的属性,都应该用来计算hashCode的值。
看下面的例子!
TreeSet ts2=new TreeSet();diyHashSet dh=new diyHashSet(1,"1");diyHashSet dh2=new diyHashSet(2,"1");diyHashSet dh3=new diyHashSet(3,"1");ts2.add(dh);ts2.add(dh2);//执行到这里是爆出异常!!cannot be cast to java.lang.Comparable 因为Treeset的add方法对象时实现comparable接口的方法!他没有实现!在检查时报异常!!ts2.add(dh3);