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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java `WeakHashMap` > 原文: [https://www.programiz.com/java-programming/weakhashmap](https://www.programiz.com/java-programming/weakhashmap) #### 在本教程中,我們將借助示例學習 Java `WeakHashMap`及其操作。 我們還將了解`WeakHashMap`和`HashMap`之間的區別 Java 集合框架的`WeakHashMap`類提供了哈希表數據結構的功能。 它實現了[`Map`接口](/java-programming/map "Java Map Interface")。 ![Java WeakHashMap implements the Map interface.](https://img.kancloud.cn/31/e9/31e91744645269d5be072df772a3cc12_396x558.png) **注意**:弱哈希映射的鍵為`WeakReference`類型。 如果引用不再在程序中使用,則弱引用類型的對象可以在 Java 中被垃圾回收。 讓我們學習首先創建一個弱哈希映射。 然后,我們將學習它與哈希映射的區別。 * * * ## 創建一個`WeakHashMap` 為了創建一個弱哈希表,我們必須首先導入`java.util.WeakHashMap`包。 導入包后,可以使用以下方法在 Java 中創建弱哈希表。 ```java //WeakHashMap creation with capacity 8 and load factor 0.6 WeakHashMap<Key, Value> numbers = new WeakHashMap<>(8, 0.6); ``` 在上面的代碼中,我們創建了一個名為`number`的弱哈希映射。 這里, * `key` - 用于關聯映射中每個元素(值)的唯一標識符 * `value` - 映射中與按鍵相關聯的元素 注意部分`new WeakHashMap<>(8, 0.6)`。 在此,第一個參數是`capcity`,第二個參數是`loadFactor`。 * **`capcity`** - 此映射的容量為 8。意味著,它可以存儲 8 個條目。 * **`loadFactor`** - 此映射的負載因子為 0.6。 這意味著只要我們的哈希表填充了 60%,條目就會被移到新哈希表中,其大小是原始哈希表的兩倍。 **默認容量和負載系數** 可以在不定義其容量和負載因子的情況下創建弱哈希映射。 例如, ```java // WeakHashMap with default capacity and load factor WeakHashMap<Key, Value> numbers1 = new WeakHashMap<>(); ``` 默認, * 映射的容量將為 16 * 負載系數將為 0.75 * * * ## `HashMap`和`WeakHashMap`之間的差異 讓我們看看 Java 中弱哈希表的實現。 ```java import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating WeakHashMap of numbers WeakHashMap<String, Integer> numbers = new WeakHashMap<>(); String two = new String("Two"); Integer twoValue = 2; String four = new String("Four"); Integer fourValue = 4; // Inserting elements numbers.put(two, twoValue); numbers.put(four, fourValue); System.out.println("WeakHashMap: " + numbers); // Make the reference null two = null; // Perform garbage collection System.gc(); System.out.println("WeakHashMap after garbage collection: " + numbers); } } ``` **輸出** ```java WeakHashMap: {Four=4, Two=2} WeakHashMap after garbage collection: {Four} ``` 如我們所見,當弱哈希映射的鍵`Two`設置為`null`并執行垃圾回收時,該鍵將被刪除。 這是因為與哈希映射不同,弱哈希映射的鍵是**弱引用**類型。 這意味著如果不再使用映射條目,則垃圾收集器將刪除該條目。 這對于節省資源很有用。 現在讓我們在哈希映射中查看相同的實現。 ```java import java.util.HashMap; class Main { public static void main(String[] args) { // Creating HashMap of even numbers HashMap<String, Integer> numbers = new HashMap<>(); String two = new String("Two"); Integer twoValue = 2; String four = new String("Four"); Integer fourValue = 4; // Inserting elements numbers.put(two, twoValue); numbers.put(four, fourValue); System.out.println("HashMap: " + numbers); // Make the reference null two = null; // Perform garbage collection System.gc(); System.out.println("HashMap after garbage collection: " + numbers); } } ``` **輸出**: ```java HashMap: {Four=4, Two=2} HashMap after garbage collection: {Four=4, Two=2} ``` 在此,當哈希映射的鍵`Two`被設置為`null`并執行垃圾收集時,該鍵不會被刪除。 這是因為與弱哈希表不同,哈希表的鍵是**強引用**類型。 這意味著垃圾回收器不會刪除映射的條目,即使不再使用該條目的鍵。 **注意**:哈希映射和弱哈希映射的所有功能都是相似的,只是弱哈希映射的鍵是弱引用,而哈希映射的鍵是強引用。 * * * ## 從其他映射創建`WeakHashMap` 這是我們可以從其他映射創建弱哈希表的方法。 ```java import java.util.HashMap; import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating a hashmap of even numbers HashMap<String, Integer> evenNumbers = new HashMap<>(); String two = new String("Two"); Integer twoValue = 2; evenNumbers.put(two, twoValue); System.out.println("HashMap: " + evenNumbers); // Creating a weak hash map from other hashmap WeakHashMap<String, Integer> numbers = new WeakHashMap<>(evenNumbers); System.out.println("WeakHashMap: " + numbers); } } ``` **輸出**: ```java HashMap: {Two=2} WeakHashMap: {Two=2} ``` * * * ## `WeakHashMap`的方法 `WeakHashMap`類提供允許我們在映射上執行各種操作的方法。 * * * ## 將元素插入`WeakHashMap` * `put()` - 將指定的鍵/值映射插入到映射中 * `putAll()` - 將指定映射中的所有條目插入此映射中 * `putIfAbsent()` - 如果映射中不存在指定的鍵,則將指定的鍵/值映射插入到映射中 例如, ```java import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating WeakHashMap of even numbers WeakHashMap<String, Integer> evenNumbers = new WeakHashMap<>(); String two = new String("Two"); Integer twoValue = 2; // Using put() evenNumbers.put(two, twoValue); String four = new String("Four"); Integer fourValue = 4; // Using putIfAbsent() evenNumbers.putIfAbsent(four, fourValue); System.out.println("WeakHashMap of even numbers: " + evenNumbers); //Creating WeakHashMap of numbers WeakHashMap<String, Integer> numbers = new WeakHashMap<>(); String one = new String("One"); Integer oneValue = 1; numbers.put(one, oneValue); // Using putAll() numbers.putAll(evenNumbers); System.out.println("WeakHashMap of numbers: " + numbers); } } ``` **輸出**: ```java WeakHashMap of even numbers: {Four=4, Two=2} WeakHashMap of numbers: {Two=2, Four=4, One=1} ``` * * * ## 訪問`WeakHashMap`元素 **1.使用`entrySet()`,`keySet()`和`values()`** * `entrySet()` - 返回一組所有鍵/值映射的映射 * `keySet()` - 返回映射的所有鍵的集合 * `values()` - 返回一組所有映射值 例如: ```java import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating WeakHashMap of even numbers WeakHashMap<String, Integer> numbers = new WeakHashMap<>(); String one = new String("One"); Integer oneValue = 1; numbers.put(one, oneValue); String two = new String("Two"); Integer twoValue = 2; numbers.put(two, twoValue); System.out.println("WeakHashMap: " + numbers); // Using entrySet() System.out.println("Key/Value mappings: " + numbers.entrySet()); // Using keySet() System.out.println("Keys: " + numbers.keySet()); // Using values() System.out.println("Values: " + numbers.values()); } } ``` **輸出**: ```java WeakHashMap: {Two=2, One=1} Key/Value mappings: [Two=2, One=1] Keys: [Two, One] Values: [1, 2] ``` **2.使用`get()`和`getOrDefault()`** * `get()` - 返回與指定鍵關聯的值。 如果找不到鍵,則返回`null`。 * `getOrDefault()` - 返回與指定鍵關聯的值。 如果找不到鍵,則返回指定的默認值。 例如: ```java import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating WeakHashMap of even numbers WeakHashMap<String, Integer> numbers = new WeakHashMap<>(); String one = new String("One"); Integer oneValue = 1; numbers.put(one, oneValue); String two = new String("Two"); Integer twoValue = 2; numbers.put(two, twoValue); System.out.println("WeakHashMap: " + numbers); // Using get() int value1 = numbers.get("Two"); System.out.println("Using get(): " + value1); // Using getOrDefault() int value2 = numbers.getOrDefault("Four", 4); System.out.println("Using getOrDefault(): " + value2); } } ``` **輸出**: ```java WeakHashMap: {Two=2, One=1} Using get(): 2 Using getOrDefault(): 4 ``` * * * ## 刪除`WeakHashMap`元素 * `remove(key)` - 返回并從映射中刪除與指定鍵關聯的條目 * `remove(key, value)` - 僅當指定鍵映射到指定值并返回布爾值時,才從映射中刪除條目 例如: ```java import java.util.WeakHashMap; class Main { public static void main(String[] args) { // Creating WeakHashMap of even numbers WeakHashMap<String, Integer> numbers = new WeakHashMap<>(); String one = new String("One"); Integer oneValue = 1; numbers.put(one, oneValue); String two = new String("Two"); Integer twoValue = 2; numbers.put(two, twoValue); System.out.println("WeakHashMap: " + numbers); // Using remove() with single parameter int value = numbers.remove("Two"); System.out.println("Removed value: " + value); // Using remove() with 2 parameters boolean result = numbers.remove("One", 3); System.out.println("Is the entry {One=3} removed? " + result); System.out.println("Updated WeakHashMap: " + numbers); } } ``` **輸出**: ```java WeakHashMap: {Two=2, One=1} Removed value: 2 Is the entry {One=3} removed? False Updated WeakHashMap: {One=1} ``` * * * ## `WeakHashMap`的其他方法 | 方法 | 描述 | | --- | --- | | `clear()` | 從映射中刪除所有條目 | | `containsKey()` | 檢查映射是否包含指定的鍵并返回布爾值 | | `containsValue()` | 檢查映射是否包含指定的值并返回布爾值 | | `size()` | 返回映射的大小 | | `isEmpty()` | 檢查映射是否為空并返回布爾值 | * * * 要了解更多信息,請訪問 [Java `WeakHashMap`(官方 Java 文檔)](https://docs.oracle.com/javase/7/docs/api/java/util/WeakHashMap.html)。
                  <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>

                              哎呀哎呀视频在线观看