HashSet基本操做

** 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

equals和hashcode

注意,这边是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());
        }
    }
相关文章
相关标签/搜索