目錄
? ? ? ? 1.0 Map 集合的說明
? ? ? ? 1.1 Map 集合的常用方法
? ? ? ? 1.2?Map 系列集合的特點
? ? ? ? 2.0?Map 系列集合的遍歷方法(三種方法)
???????? 2.1 使用 keySet() 方法遍歷
????????2.2 使用 entrySet() 方法遍歷
????????2.3 使用 forEach() 方法遍歷(Java 8+)
? ? ? ? 1.0 Map 集合的說明
????????Map 是一種集合類型,用于存儲鍵值對(key-value pairs)。每個鍵都是唯一的,而值可以重復。Map 可以根據鍵快速查找對應的值。在 Map 中,鍵和值可以是任意類型的對象。簡單來說,Map 類是一個接口,是一種容器,存放著鍵值對類型的元素。
? ? ? ? 1.1 Map 集合的常用方法
以代碼的方式來介紹 Map 集合的常用方法:
import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapAPI { public static void main(String[] args) { //由于 Map 是一個接口,不能直接 new 一個 Map 類型的對象, //所以需要用到 Map 的實現類 HashMap 來創(chuàng)建對象。 Map<String,Integer> map = new HashMap<>();//一行經典代碼 //1. put(k,v) :實例方法,添加元素 map.put("二哈",250); map.put("金毛",750); map.put("拉布拉多",1250); map.put("中華田園犬",1359); System.out.println(map); //輸出結果為:{二哈=250, 金毛=750, 中華田園犬=1359, 拉布拉多=1250} //2. size() :實例方法,獲取元素大小 int s = map.size(); System.out.println(s); //輸出結果為:4 //3. isEmpty() :實例方法,判斷集合是否為空,為空返回true,反之 boolean b = map.isEmpty(); System.out.println(b); //輸出結果為:false //4. get(k) :實例方法,根據鍵獲取對應的值 int i = map.get("二哈"); System.out.println(i); //輸出結果為:250 //5. remove(k) :實例方法,根據鍵刪除整個元素 map.remove("二哈"); System.out.println(map); //輸出結果為:{金毛=750, 中華田園犬=1359, 拉布拉多=1250} //6. containsKey(k) :實例方法,判斷是否包含某個鍵 boolean bk = map.containsKey("二哈"); System.out.println(bk); //輸出結果為:false //7. containsValue(k) :實例方法,判斷是否包含某個值 boolean bv = map.containsValue(750); System.out.println(bv); //輸出結果為:true //8. keySet() :實例方法,獲取全部鍵的集合, // 需要用 Set 系列集合來接受。 Set<String> stringSet = map.keySet(); System.out.println(stringSet); //輸出結果為:[金毛, 中華田園犬, 拉布拉多] //9. values() :實例方法,獲取全部值 //需要用 Collection 系列集合來接受 Collection<Integer> collection = map.values(); System.out.println(collection); //輸出結果為:[750, 1359, 1250] //10. putAll(Map m) :將 m 中的內容全部倒入到調用該方法的集合中。 Map<String,Integer> map1 = new HashMap<>(); map1.put("小黑",19999); map1.put("小白",29999); map.putAll(map1); System.out.println(map); //輸出結果為:{小白=29999, 金毛=750, 小黑=19999, 中華田園犬=1359, 拉布拉多=1250} //11. clear() :實例方法,刪除整個集合中的元素 map.clear(); System.out.println(map); //輸出結果為:{} } }
運行結果如下:
? ? ? ? 1.2?Map 系列集合的特點
? ? ? ? 無序:就是不會按照添加的元素輸出,隨機輸出,如以下:
? ? ? ? 不可重復:指定的是 ”鍵“ 是不允許重復出現,后來添加的重復的元素會覆蓋相同 ”鍵“ 的元素,但是 ”值“ 是不做要求,可以重復出現,如以下:
? ? ? ? 無索引:因為 Map 系列集合不支持固定的順序,存在索引自然是沒有意義的。
? ? ? ? 2.0?Map 系列集合的遍歷方法(三種方法)
???????? 2.1 使用 keySet() 方法遍歷
????????通過 Map 的 keySet() 方法獲取所有的鍵,然后使用 for-each 循環(huán)遍歷鍵,并通過 get() 方法獲取對應的值。
通過具體的代碼來實現:
public class MapIteration { public static void main(String[] args) { Map<String,Integer> map = new HashMap<>(); map.put("二哈",250); map.put("金毛",1250); map.put("拉布拉多",2250); map.put("中華田園犬",3250); //先取出該集合的全部”鍵“ Set<String> stringSet = map.keySet(); //然后用增強 for 方法根據”鍵“通過 get(k) 來查詢”值“ for (String k:stringSet) { int v = map.get(k); System.out.println(k+"=="+v); } } }
運行結果:
? ? ? ? 步驟:先取出該集合的全部”鍵“,再然后用增強 for 方法根據”鍵“通過 get(k) 方法來查詢”值“。
????????2.2 使用 entrySet() 方法遍歷
????????通過 Map 的 entrySet() 方法獲取所有的鍵值對的 Entry 對象,然后使用 for-each 循環(huán)遍歷 Entry 對象,。簡單來說就是,將集合中的一個鍵值對看作一個整體,然后就用增強 for 循環(huán)來遍歷集合,再通過 getKey() 和 getValue() 方法獲取鍵和值。
通過具體的代碼來實現:
import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapIteration { public static void main(String[] args) { Map<String,Integer> map = new HashMap<>(); map.put("二哈",250); map.put("金毛",1250); map.put("拉布拉多",2250); map.put("中華田園犬",3250); //通過調用 map 的實例方法 entrySet(),鍵值對包裝成一個整體, //Map.Entry<String,Integer>這代碼可以理解為是一個類型,用 Set 系列集合來存儲 Set<Map.Entry<String,Integer>> entrySet = map.entrySet(); for (Map.Entry<String,Integer> entry:entrySet) { String k = entry.getKey(); int v = entry.getValue(); System.out.println(k+"=="+v); } } }
運行結果為:
????????2.3 使用 forEach() 方法遍歷(Java 8+)
????????通過 Map 的 forEach() 方法,傳入一個 BiConsumer 函數接口來遍歷鍵值對。BiConsumer 接口的 accept() 方法接收兩個參數,分別是鍵和值。
? ? ? ? 需要注意的是,這里的 forEach() 該 Map 的實例方法。
通過具體的代碼來實現:
import java.util.Map; import java.util.HashMap; public class MapIteration { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("二哈", 250); map.put("金毛", 1250); map.put("拉布拉多", 2250); map.put("中華田園犬", 3250); /* map.forEach(new BiConsumer<String, Integer>() { @Override public void accept(String k, Integer v) { System.out.println(k+"=="+v); } });*/ //進一步簡化為: map.forEach((k, v) -> System.out.println(k + "==" + v)); } }
運行結果如下:
? ? ? ? 補充,其實這種方法本質來說是第二種方法的包裝。本質還是使用 entrySet() 方法遍歷,源代碼如下:
? ? ? ? 可見,第三種方法是很容易實現對 Map 系列集合的遍歷的,就需要一行代碼就搞定了,也很容易記?。?/strong>文章來源:http://www.zghlxwxcb.cn/news/detail-716751.html
map.forEach((k, v) -> System.out.println(k + "==" + v));
? ? ? ?? 本篇先介紹到這里,更多內容點擊以下鏈接:??小扳_-CSDN博客?文章來源地址http://www.zghlxwxcb.cn/news/detail-716751.html
到了這里,關于進階JAVA篇- Map 系列集合的遍歷方法與常用API的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!