<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 中的`HashMap`迭代 原文:http://zetcode.com/java/hashmapiterate/ Java 教程中的`HashMap`迭代演示了如何迭代 Java 中的`HashMap`。 ## Java `HashMap` `HashMap`是一個存儲鍵值對的容器。 每個鍵與一個值關聯。 `HashMap`中的鍵必須唯一。 `HashMap`在其他編程語言中稱為關聯數組或詞典。 `HashMaps`占用更多內存,因為每個值還有一個鍵。 刪除和插入操作需要固定的時間。 `HashMaps`可以存儲空值。 `Map.Entry`表示`HashMap`中的鍵/值對。 `HashMap`的`entrySet()`返回包含在映射中的映射的`Set`視圖。 使用`keySet()`方法檢索一組鍵。 ## 使用`forEach()`的`HashMap`迭代 在第一個示例中,我們使用 Java8 `forEach()`方法來迭代`HashMap`的鍵值對。 `forEach()`方法對映射的每個元素執行給定的操作,直到所有元素都已處理或該操作引發異常。 `HashMapForEach.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; public class HashMapForEach { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); items.forEach((k, v) -> { System.out.format("key: %s, value: %d%n", k, v); }); } } ``` 在代碼示例中,我們使用 lambda 表達式迭代了`HashMap`和`forEach()`。 ```java Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); ``` 用兩對創建一個`HashMap`。 ```java items.forEach((k, v) -> { System.out.format("key: %s, value: %d%n", k, v); }); ``` `forEach()`使代碼更簡潔。 ## 使用流 API 的`HashMap`迭代 流是來自源的一系列元素,支持順序和并行聚合操作。 源可以是將數據提供給流的集合,IO 操作或數組。 `HashMapStreamApi.java` ```java package com.zetcode; import java.util.HashMap; public class HashMapStreamApi { public static void main(String[] args) { HashMap<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); items.entrySet().stream().forEach(e -> { System.out.format("key: %s, value: %d%n", e.getKey(), e.getValue()); }); } } ``` 該示例使用流 API 在`HashMap`上進行迭代。 我們使用`entrySet()`方法獲得條目集,并使用`stream()`方法從條目集中獲得流。 稍后,我們使用`forEach()`遍歷流。 ## 使用增強的`for`循環的`HashMap`迭代 Java 5 中引入的增強的`for`循環可用于對`HashMap`進行迭代。 `HashMapEnhancedFor.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; public class HashMapEnhancedFor { public static void main(String[] args) { HashMap<String, Integer> items = new HashMap(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); for (Map.Entry<String, Integer> pair: items.entrySet()) { System.out.format("key: %s, value: %d%n", pair.getKey(), pair.getValue()); } } } ``` 在該示例中,我們迭代具有增強的`for`循環的`HashMap`。 ```java for (Map.Entry<String, Integer> pair: items.entrySet()) { System.out.format("key: %s, value: %d%n", pair.getKey(), pair.getValue()); } ``` 在每個`for`周期中,都將新的鍵值對分配給`pair`變量。 ## 使用`Iterator`的`HashMap`迭代 在下面的示例中,我們使用`Iterator`和`Map.Entry`遍歷`HashMap`。 `HashMapIterator.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapIterator { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); Iterator<Map.Entry<String, Integer>> it = items.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Integer> pair = it.next(); System.out.format("key: %s, value: %d%n", pair.getKey(), pair.getValue()); } } } ``` 在代碼示例中,我們檢索鍵值對上的迭代器,并在`while`循環中對映射進行迭代。 ```java Iterator<Map.Entry<String, Integer>> it = items.entrySet().iterator(); ``` 我們得到了迭代器對象。 首先,我們使用`entrySet()`方法獲得條目集,然后使用`iterator()`方法從條目集中獲得迭代器。 ```java while (it.hasNext()) { ``` 如果迭代具有更多元素,則迭代器的`hasNext()`方法返回`true`。 ```java Map.Entry<String, Integer> pair = it.next(); ``` `next`方法返回下一對。 ```java System.out.format("key: %s, value: %d", pair.getKey(), pair.getValue()); ``` 使用`getKey()`和`getValue()`方法,我們可以獲得鍵對和值。 以下示例是相同的,但是使用`for`循環而不是`while`。 `HashMapIterator2.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapIterator2 { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); for (Iterator<Map.Entry<String, Integer>> it = items.entrySet().iterator(); it.hasNext();) { Map.Entry<String, Integer> pair = it.next(); System.out.format("key: %s, value: %d%n", pair.getKey(), pair.getValue()); } } } ``` 在示例中,我們使用迭代器和`for`循環迭代`HashMap`。 在下一個示例中,我們使用`HashMap`的`keySet()`方法在迭代器上迭代鍵集,該方法返回此映射中包含的鍵的`Set`視圖。 此迭代效率較低。 `HashMapIterator3.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class HashMapIterator3 { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); Iterator<String> it = items.keySet().iterator(); while (it.hasNext()) { String key = it.next(); System.out.format("key: %s, value: %d%n", key, items.get(key)); } } } ``` 在示例中,我們使用迭代器迭代映射的鍵集。 在`while`循環中使用迭代器來遍歷映射的鍵。 以后使用該鍵獲取相應的值。 ```java Iterator<String> it = items.keySet().iterator(); ``` 我們得到鍵集的迭代器對象。 ```java while (it.hasNext()) { ``` 在`while`循環中,我們遍歷`HashMap`的鍵。 ```java String key = it.next(); ``` 檢索下一個鍵。 ```java System.out.format("key: %s, value: %d%n", key, items.get(key)); ``` 使用`get()`方法檢索該值。 ## `HashMap`迭代鍵 我們可能只需要遍歷`HashMap`的鍵。 `HashMapKeys.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; import java.util.Set; public class HashMapKeys { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); Set<String> keys = items.keySet(); keys.forEach(System.out::println); } } ``` 該示例迭代`HashMap`的鍵。 ```java Set<String> keys = items.keySet(); ``` 用`keySet()`方法檢索`HashMap`的鍵,該方法返回鍵`Set`。 鍵必須唯一; 因此,我們有一個`Set`。 `Set`是一個不包含重復元素的集合。 ```java keys.forEach(System.out::println); ``` 我們用`forEach()`遍歷鍵集。 ## `HashMap`迭代值 我們可能只需要迭代`HashMap`的值。 `HashMapValues.java` ```java package com.zetcode; import java.util.Collection; import java.util.HashMap; import java.util.Map; public class HashMapValues { public static void main(String[] args) { Map<String, Integer> items = new HashMap<>(); items.put("coins", 5); items.put("pens", 2); items.put("chairs", 7); Collection<Integer> vals = items.values(); vals.forEach(System.out::println); } } ``` 該示例迭代`HashMap`的值。 ```java Collection<Integer> vals = items.values(); ``` `HashMap`的值通過`values()`方法檢索。 ```java vals.forEach(System.out::println); ``` 我們使用`forEach()`遍歷集合。 ## 在包含`ArrayList`的`HashMap`上進行迭代 `HashMap`可以包含列表作為值。 在這種情況下,我們需要一個額外的循環。 `HashMapList.java` ```java package com.zetcode; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class HashMapList { public static void main(String[] args) { Map<String, List<String>> m = new HashMap<>(); m.put("colours", Arrays.asList("red", "green", "blue")); m.put("sizes", Arrays.asList("small", "medium", "big")); for (Map.Entry<String, List<String>> me : m.entrySet()) { String key = me.getKey(); List<String> values = me.getValue(); System.out.println("Key: " + key); System.out.print("Values: "); for (String e : values) { System.out.printf("%s ", e); } System.out.println(); } } } ``` 在示例中,我們迭代包含`ArrayLists`作為值的`HashMap`。 我們使用兩個`for`循環。 ```java Map<String, List<String>> m = new HashMap<>(); m.put("colours", Arrays.asList("red", "green", "blue")); m.put("sizes", Arrays.asList("small", "medium", "big")); ``` 我們定義一個以`ArrayLists`為值的`HashMap`。 ```java for (Map.Entry<String, List<String>> me : m.entrySet()) { ``` 使用增強的`for`循環,我們遍歷條目集。 每個條目都有一個鍵字符串和列表值。 ```java String key = me.getKey(); ``` 我們通過`getKey()`方法獲得鍵。 ```java List<String> values = me.getValue(); ``` 我們用`getValue()`獲得列表。 ```java for (String e : values) { System.out.printf("%s ", e); } ``` 在內部`for`循環中,我們遍歷值列表。 ## `HashMap`過濾 可以使用流 API 的`filter()`方法過濾`HashMap`。 `HashMapFilter.java` ```java package com.zetcode; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; public class HashMapFilter { public static void main(String[] args) { Map<String, String> capitals = new HashMap<>(); capitals.put("svk", "Bratislava"); capitals.put("ger", "Berlin"); capitals.put("hun", "Budapest"); capitals.put("czk", "Prague"); capitals.put("pol", "Warsaw"); capitals.put("ita", "Rome"); Map<String, String> filteredCapitals = capitals.entrySet().stream() .filter(map -> map.getValue().startsWith("B")) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); filteredCapitals.entrySet().forEach(System.out::println); } } ``` 在此示例中,我們有一個國家及其首都的映射。 我們將映射過濾為僅包含值以 B 開頭的對。 在本教程中,我們展示了如何迭代 Java 中的`HashMap`。 您可能也對相關教程感興趣: [Java `HashMap`教程](/java/hashmap/), [Java8 `forEach`教程](/articles/java8foreach/),[用 Java 讀取文本文件](/articles/javareadtext/),[讀寫 ICO Java 中的圖像](/articles/javaico/), [Java Swing 教程](/tutorials/javaswingtutorial/),[Java 教程](/lang/java/),[用 Java 顯示圖像](/java/displayimage/)。
                  <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>

                              哎呀哎呀视频在线观看