Java中HashMap的常見用法詳解
1、常用方法示例
Map<String,Integer> map=new HashMap<>();//Map父類 map.put("zhangsan", 10); map.put("lisa", 20); map.put("wangwu", 50); System.out.println(map.get("lisi")); System.out.println(map.remove("lisi")); System.out.println(map.size()); System.out.println(map.isEmpty()); System.out.println(map.containsKey("tulun")); System.out.println(map.containsValue(50)); //返回Map中所包含的鍵值對(<String,Integer>)所組成的Set集合,每個集合元素都是Map.Entry()對象,其中Entry是Map的內(nèi)部類 Set<Map.Entry<String,Integer>> entries=map.entrySet(); //Set屬于Collection,而Collection含有Iterator方法 Iterator<Map.Entry<String,Integer>> iterator=entries.iterator(); while(iterator.hasNext()) { Map.Entry<String,Integer> next=iterator.next(); System.out.println(next.getKey()+"::"+next.getValue()); }
2、3種遍歷方式
Map集合沒有迭代器(iterator()),遍歷集合中的元素可以用以下三種方法:
keySet()
- 使用Map集合中的keySet()方法,把Map集合 所有的key取出來 存儲到一個Set集合中
- 遍歷set集合,獲取Map中的每一個key
- 通過Map集合中的方法get(key),通過key找到value
entrySet()
- 使用Map集合中的entrySet()方法,把Map集合中 多個Entry對象取出來 存儲到一個Set集合中
- 遍歷set集合,獲取每一個Entry對象
- 使用**Entry對象中的getKey()和getValue()**方法獲取鍵和值
values()
Map<String, String> map = new HashMap<>(); map.put("張三", "123456"); map.put("李四", "456321"); map.put("王五", "741852"); map.put("趙六", "963321"); //遍歷方式1: 將map中的key的部分, 單獨取出, 成為set, 遍歷這個set Set<String> set = map.keySet(); //使用迭代器Iterator遍歷Set集合 Iterator<String> it = set.iterator(); while (it.hasNext()) { String key = it.next(); String value = map.get(key); System.out.println(key + "=" + value); } // //使用forEach();遍歷Set集合 // for (String key : set) { // String value = map.get(key); // System.out.println(key + "=" + value); // } // System.out.println(); //遍歷方式2: entrySet 鍵值對封裝成一個整體-Entry, Set<Entry> Set< Map.Entry<String, String> > set1 = map.entrySet(); // HashMap源碼1005行 for (Map.Entry<String, String> en : set1) { String key = en.getKey(); String value = en.getValue(); System.out.println(key + "=" + value); } System.out.println(); // 遍歷方式3: 所有的值存儲到一個Collection集合中返回 // 弊端: 就只能遍歷值, 不能遍歷鍵, 因為map不能反向映射 Collection<String> values = map.values(); for (String value : values) { System.out.println(value); }
3、定義的時候初始化
private static Map<Character, Integer> map = new HashMap<Character, Integer>(){{ put('0', 0); put('1', 1); put('2', 2); put('3', 3); put('4', 4); put('5', 5); put('6', 6); put('7', 7); put('8', 8); put('9', 9); put('A', 10); put('B', 11); put('C', 12); put('D', 13); put('E', 14); put('F', 15); }};
4、getOrDefault(Object key, V defaultValue)
當(dāng)Map集合中有這個key時,就使用這個key值;
如果沒有,就使用默認(rèn)值defaultValue。
代碼示例如下:
HashMap<String, String> map1 = new HashMap<>(); map1.put("name", "cookie"); map1.put("age", "18"); map1.put("sex", "女"); String name = map1.getOrDefault("name", "random"); System.out.println(name);// cookie,map中存在name,獲得name對應(yīng)的value String score = map1.getOrDefault("score", "80"); System.out.println(score);// 80,map中不存在score,使用默認(rèn)值80
5、putIfAbsent(K key, V value)
先判斷指定的鍵(key)是否存在。不存在 則將 鍵/值對 插入到 HashMap 中。
public static void main(String[] args) { // putIfAbsent() 方法會先判斷指定的鍵(key)是否存在。若不存在 則將鍵/值對插入到 HashMap 中。 HashMap<Integer, String> sites = new HashMap<>(); // 往 HashMap 添加一些元素 sites.put(1, "Google"); sites.put(2, "Runoob"); sites.put(3, "Taobao"); System.out.println("sites HashMap: " + sites); //sites HashMap: {1=Google, 2=Runoob, 3=Taobao} // HashMap 不存在該key sites.putIfAbsent(4, "Weibo"); // HashMap 中 存在 Key,所以 不會執(zhí)行插入操作 sites.putIfAbsent(2, "Wiki"); System.out.println("Updated Languages: " + sites);//Updated Languages: {1=Google, 2=Runoob, 3=Taobao, 4=Weibo} }
到此這篇關(guān)于Java中HashMap的常見用法詳解的文章就介紹到這了,更多相關(guān)HashMap用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot過濾器與攔截器深入分析實現(xiàn)方法
大家應(yīng)該都曉得實現(xiàn)過濾器需要實現(xiàn) javax.servlet.Filter 接口,而攔截器會在處理指定請求之前和之后進行相關(guān)操作,配置攔截器需要兩步,本文通過實例代碼給大家介紹SpringBoot 過濾器和攔截器的相關(guān)知識,感興趣的朋友一起看看吧2022-11-11淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略
這篇文章主要介紹了淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Java Lock鎖多線程中實現(xiàn)流水線任務(wù)
這篇文章主要介紹了Java Lock鎖多線程中實現(xiàn)流水線任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05使用jaxp進行dom解析_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了使用jaxp進行dom解析的相關(guān)資料,需要的朋友可以參考下2017-08-08探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔
這篇文章主要介紹了Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔,本文通過分步指南及代碼示例展示了如何將 Markdown 文件轉(zhuǎn)換為 Word 文檔和 PDF 文件,需要的朋友可以參考下2024-07-07JavaWeb連接數(shù)據(jù)庫MySQL的操作技巧
數(shù)據(jù)庫是編程中重要的一部分,它囊括了數(shù)據(jù)操作,數(shù)據(jù)持久化等各方面。在每一門編程語言中都占有相當(dāng)大的比例。本次,小編以MySQL為例,使用mvc編程思想,給大家講解下javaweb對數(shù)據(jù)庫的操作2017-02-02