** 1.HashSet的添加时的去重机制 **算法
**1.1 **重要:须要去重的对象必须作到覆盖Object的equals和hashcode方法,具体实现须要根据业务场景来定.数组
**1.2 **HashSet 会首先调用 obj 的 hasCode 方法获得该对象的哈希码,HashSet 会使用一个算法把它的哈希码转换成一个数组下标,该下标“标记”了 obj 的位置。若是这个位置上的链表中没有元素,那么就把 obj 对象添加到链表上。若是这个位置上的链表中已经有了元素,则遍历这个链表,调用 obj 的 equals 方法,判断 obj 是否和其中的某个元素重复,若是没有重复的元素,那么就将 obj 添加到链表上;若是有重复的元素,则不会将 obj 对象存入 HashSet 中。code
tips:当你清楚的知道一个对象当哪几个属性出现一致时,则默认这个对象是重复的对象
1. 3. 实例:ip
taskid和parentid在不一样对象里面如果出现相同,Hashset则不会重复添加hash
注意,这边是String和int组合生成hashcode值.it
** 2.HashSet的遍历 **遍历
其实,HashSet的底层实现相似HashMap,因此遍历的方式也是接近HashMap的形式.方法
public static void main(String[] args) { Set<String> keySet = new HashSet<>(); keySet.add("1"); keySet.add("2"); for (Iterator it = keySet.iterator(); it.hasNext(); ) { System.out.println(it.next().toString()); } }