<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java `LinkedHashSet` > 原文: [https://www.programiz.com/java-programming/linkedhashset](https://www.programiz.com/java-programming/linkedhashset) #### 在本教程中,我們將借助示例學習 Java `LinkedHashSet`類及其方法。 Java 集合框架的`LinkedHashSet`類提供哈希表和鏈表數據結構的功能。 它實現了[`Set`接口](/java-programming/set "Java Set Interface")。 ![Java LinkedHastSet class implements the Set interface.](https://img.kancloud.cn/76/91/76919e3ed606516646772eb50a5256bd_396x558.png) `LinkedHashSet`的元素存儲在類似于[`HashSet`](/java-programming/hashset "Java HashSet Class")的哈希表中。 但是,鏈接哈希集在內部為其所有元素維護一個雙鏈表。 鏈表定義了在哈希表中插入元素的順序。 * * * ## 創建一個`LinkedHashSet` 為了創建鏈接的哈希集,我們必須首先導入`java.util.LinkedHashSet`包。 導入包后,就可以在 Java 中創建鏈接的哈希集。 ```java // LinkedHashSet with 8 capacity and 0.75 load factor LinkedHashSet<Integer> numbers = new LinkedHashSet<>(8, 0.75); ``` 在這里,我們創建了一個名為`number`的鏈接哈希集。 注意,部分`new LinkedHashSet<>(8, 0.75)`。 在此,第一個參數是`capcity`,第二個參數是`loadFactor`。 * **`capcity`** - 此哈希集的容量為 8。意味著,它可以存儲 8 個元素。 * **`loadFactor`** - 此哈希集的負載因子為 0.6。 這意味著,只要我們的哈希表填充了 60%,元素就會移到新哈希表中,其大小是原始哈希表的兩倍。 **默認容量和負載系數** 無需定義其容量和負載因子就可以創建鏈接的哈希集。 例如, ```java // LinkedHashSet with default capacity and load factor LinkedHashSet<Integer> numbers1 = new LinkedHashSet<>(); ``` 默認, * 鏈接哈希集的容量將為 16 * 負載系數將為 0.75 * * * ## 從其他集合創建`LinkedHashSet` 這是我們如何創建包含其他集合的所有元素的鏈接哈希集。 ```java import java.util.LinkedHashSet; import java.util.ArrayList; class Main { public static void main(String[] args) { // Creating an arrayList of even numbers ArrayList<Integer> evenNumbers = new ArrayList<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("ArrayList: " + evenNumbers); // Creating a LinkedHashSet from an ArrayList LinkedHashSet<Integer> numbers = new LinkedHashSet<>(evenNumbers); System.out.println("LinkedHashSet: " + numbers); } } ``` **輸出** ```java ArrayList: [2, 4] LinkedHashSet: [2, 4] ``` * * * ## `LinkedHashSet`的方法 `LinkedHashSet`類提供了一些方法,使我們可以對鏈接的哈希集執行各種操作。 * * * ## 將元素插入`LinkedHashSet` * `add()` - 將指定的元素插入鏈接的哈希集 * `addAll()` - 將指定集合的??所有元素插入到鏈接的哈希集中 例如, ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> evenNumber = new LinkedHashSet<>(); // Using add() method evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("LinkedHashSet: " + evenNumber); LinkedHashSet<Integer> numbers = new LinkedHashSet<>(); // Using addAll() method numbers.addAll(evenNumber); numbers.add(5); System.out.println("New LinkedHashSet: " + numbers); } } ``` **輸出**: ```java LinkedHashSet: [2, 4, 6] New LinkedHashSet: [2, 4, 6, 5] ``` * * * ## 訪問`LinkedHashSet`元素 要訪問鏈接的哈希集的元素,我們可以使用`iterator()`方法。 為了使用此方法,我們必須導入`java.util.Iterator`包。 例如, ```java import java.util.LinkedHashSet; import java.util.Iterator; class Main { public static void main(String[] args) { LinkedHashSet<Integer> numbers = new LinkedHashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Calling the iterator() method Iterator<Integer> iterate = numbers.iterator(); System.out.print("LinkedHashSet using Iterator: "); // Accessing elements while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } } ``` **輸出**: ```java LinkedHashSet: [2, 5, 6] LinkedHashSet using Iterator: 2, 5, 6, ``` **注意**: * 如果鏈接的哈希集中存在下一個元素,則`hasNext()`返回`true` * `next()`返回鏈接的哈希集中的下一個元素 * * * ## 從`HashSet`中刪除元素 * `remove()` - 從鏈接的哈希集中刪除指定的元素 * `removeAll()` - 從鏈接的哈希集中刪除所有元素 例如: ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> numbers = new LinkedHashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("LinkedHashSet: " + numbers); // Using the remove() method boolean value1 = numbers.remove(5); System.out.println("Is 5 removed? " + value1); boolean value2 = numbers.removeAll(numbers); System.out.println("Are all elements removed? " + value2); } } ``` **輸出**: ```java LinkedHashSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true ``` * * * ## 集的操作 `LinkedHashSet`類的各種方法也可以用于執行各種設置操作。 * * * ### 并集 兩個執行兩個集合之間的聯合,我們可以使用`addAll()`方法。 例如, ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("LinkedHashSet1: " + evenNumbers); LinkedHashSet<Integer> numbers = new LinkedHashSet<>(); numbers.add(1); numbers.add(3); System.out.println("LinkedHashSet2: " + numbers); // Union of two set numbers.addAll(evenNumbers); System.out.println("Union is: " + numbers); } } ``` **輸出**: ```java LinkedHashSet1: [2, 4] LinkedHashSet2: [1, 3] Union is: [1, 3, 2, 4] ``` * * * ### 交集 要執行兩個集合之間的相交,我們可以使用`retainAll()`方法。 例如 ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet1: " + primeNumbers); LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("LinkedHashSet2: " + evenNumbers); // Intersection of two sets evenNumbers.retainAll(primeNumbers); System.out.println("Intersection is: " + evenNumbers); } } ``` **輸出**: ```java LinkedHashSet1: [2, 3] LinkedHashSet2: [2, 4] Intersection is: [2] ``` * * * ### 差集 要計算兩組之間的差異,我們可以使用`removeAll()`方法。 例如, ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("LinkedHashSet1: " + primeNumbers); LinkedHashSet<Integer> oddNumbers = new LinkedHashSet<>(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("LinkedHashSet2: " + oddNumbers); // Difference between LinkedHashSet1 and LinkedHashSet2 primeNumbers.removeAll(oddNumbers); System.out.println("Difference : " + primeNumbers); } } ``` **輸出**: ```java LinkedHashSet1: [2, 3, 5] LinkedHashSet2: [1, 3, 5] Difference: [2] ``` * * * ### 子集 要檢查一個集合是否是另一個集合的子集,我們可以使用`containsAll()`方法。 例如, ```java import java.util.LinkedHashSet; class Main { public static void main(String[] args) { LinkedHashSet<Integer> numbers = new LinkedHashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("LinkedHashSet1: " + numbers); LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("LinkedHashSet2: " + primeNumbers); // Check if primeNumbers is a subset of numbers boolean result = numbers.containsAll(primeNumbers); System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result); } } ``` **輸出**: ```java LinkedHashSet1: [1, 2, 3, 4] LinkedHashSet2: [2, 3] Is LinkedHashSet2 is a subset of LinkedHashSet1? true ``` * * * ## `LinkedHashSet`的其他方法 | 方法 | 描述 | | --- | --- | | `clone()` | 創建`LinkedHashSet`的副本 | | `contains()` | 在`LinkedHashSet`中搜索指定的元素,并返回布爾結果 | | `isEmpty()` | 檢查`LinkedHashSet`是否為空 | | `size()` | 返回`LinkedHashSet`的大小 | | `clear()` | 從`LinkedHashSet`中刪除所有元素 | 要了解有關`LinkedHashSet`方法的更多信息,請訪問 [Java `LinkedHashSet`(Java 官方文檔)](https://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashSet.html)。 * * * ## `LinkedHashSet`與`HashSet` `LinkedHashSet`和`HashSet`都實現`Set`接口。 但是,它們之間存在一些差異。 * `LinkedHashSet`在內部維護一個鏈表。 因此,它保持其元素的插入順序。 * `LinkedHashSet`類比`HashSet`需要更多的存儲空間。 這是因為`LinkedHashSet`內部維護鏈表。 * `LinkedHashSet`的性能比`HashSet`慢。 這是因為`LinkedHashSet`中存在鏈表。 * * * * * * ## `LinkedHashSet`與`TreeSet` 以下是`LinkedHashSet`和`TreeSet`之間的主要區別: * `TreeSet`類實現`SortedSet`接口。 這就是對樹集中的元素進行排序的原因。 但是,`LinkedHashSet`類僅維護其元素的插入順序。 * `TreeSet`通常比`LinkedHashSet`慢。 這是因為每當元素添加到`TreeSet`時,它都必須執行排序操作。 * <random>`LinkedHashSet`允許插入空值。 但是,我們不能向`TreeSet`插入空值。</random>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看