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());
        }
    }
相關文章
相關標籤/搜索