HashSet 類別是 Java 集合架構的一部分,提供快速、無序的集合,不允許重複元素。它建構在 HashMap 之上,這意味著它繼承了相同的時間複雜度優勢,但純粹關注元素唯一性。在本文中,我們將探討 HashSet 的工作原理、它的獨特之處以及它與其他集合的不同之處。
哈希集是:
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
如果您需要替換重複值而不是忽略它們,HashSet 將不是正確的選擇。這是因為它優先考慮元素的唯一性。
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
儘管 setWithInitialCapacity 的容量為 5,但 size 為 0,因為 size 反映的是集合中存在的元素數量,而不是初始容量。您可以將容量視為內部儲存空間,它會隨著元素的增加而調整。
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
如果需要保留已排序的元素,請考慮使用TreeSet,它確保元素按升序排列。
在訪談中,一個常見的問題是是否可以檢索 HashSet 中元素的索引。答案是否,因為HashSet使用哈希機制來儲存元素,而不是像列表或陣列那樣基於索引的結構。
由於HashSet由HashMap支持,因此它使用映射的鍵來儲存元素,而值是不相關的。這就是為什麼 HashSet 中的每個元素都必須是唯一的,就像 HashMap 中的鍵一樣。
當您需要快速、無序的集合來避免重複時,HashSet 是一個強大的工具。雖然它為大多數操作提供了 O(1) 時間複雜度,但它缺乏排序和索引等功能。對於開發人員來說,了解 HashSet 與 HashMap 的關係有助於理解其內部運作並更好地利用集合框架。
在下一篇文章中,我們將探討訪談中常見的訪談問題,以測試候選人對集合概念的了解。
Java 基礎
Array面試重點
Java 記憶體基礎
快樂編碼!
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3