TreeSet中为什么就允许有重复的记录?
在HashSet中不能有重复记录,但是TreeSet就可以。它只要求放在其中的对象实现comparable接口。但不要求覆盖equals,hashCode方法。就算你覆盖了也没有用。
也就是说TreeSet不会调用equals,hashCode去比较元素是不是重复的。
在HashSet中不能有重复记录,但是TreeSet就可以。它只要求放在其中的对象实现comparable接口。但不要求覆盖equals,hashCode方法。就算你覆盖了也没有用。
也就是说TreeSet不会调用equals,hashCode去比较元素是不是重复的。
LinkedList允许有个重复的记录
HashSet是无顺序的List 有索引index所以 可以允许重复
Set 是不允许有重复的List 实现的子类 ArrayList AbstractList Vector(线程安全的)
Set 的实现子类 TreeSet HashSetMap
子类:HashMap Hashtable
HashTable 允许空的key 但是 HashMap不允许
如果没有实现comparable接口,则按照hashCode()和equals()方法判断是否重复。所以楼主可以试一下把comparable接口删除,再去覆盖hashCode()和equals()就会看到效果了。
代码如下:Comparator<char[]> comparator = new Comparator<char[]>() {
@Override
public int compare(char[] o1, char[] o2) {
// TODO Auto-generated method stub
if( Arrays.equals(o1, o2) ){
return 0;
}
else
return 1;
}
};
TreeSet<char[]> setOfTelNumber = new TreeSet<char[]>(comparator);在插入之后,有些重复还是会出现~想不明白为什么