最近使用HashSet时,才知道对于HashSet的类我一点也不了解。
HashSet 是不可以有重复元素的,那调用add()方法时,它的内部是怎么判断这个对象是否在该HashSet中存在的呢?
比如:
HashSet<Person> set = new HashSet<Person>(); Person p1 = new Person("tom", 12); Person p2 = new Person("tom", 12); set.add(p1); set.add(p2);
请大家指点!
如果要保证set里面不出现重复元素,必须要按照自己的需求定义两个对象相等的规则,即在Person类中覆盖掉Object中的equal和hashcode方法。
调用hashmap的put方法,直接覆盖
去掉重复元素的算法应该有很多种,至于哪种算法效率高,JDK是怎么实现的,可以看一下源码,应该不会很复杂
用这个方法:
public boolean contains(Object o)
说明:
Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that (o==null ? e==null : o.equals(e)).