HashSet实现了Set接口。而且也应该知道Set集合中是不能包含重复元素的。
那么怎么判断要add的对象是否是重复的元素呢?
这时就要通过用hashCode()和equals()方法来判断。
而hashCode()是Object类的方法(equals()方法也是),所有类都间接或直接继承了Object类,因此需要重写hashCode()和equals()方法
如下一个示例:
HashSet hs = new HashSet();
hs.add("001");
hs.add("002");
hs.add("001");//重复元素
参照以上示例说明原理:
当调用HashSet的add(Object a)时,
1.将a的hashCode值(直接说成hashCode值)与已有元素的hashCode值进行比较,如果不同则直接加进去,
2.如果hashCode值相同则接着调用equals方法比较,如果equals方法返回真则不加,返回true则加进去。 |