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)
當Map集合中有這個key時,就使用這個key值;
如果沒有,就使用默認值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對應的value
String score = map1.getOrDefault("score", "80");
System.out.println(score);// 80,map中不存在score,使用默認值805、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)文章
SpringMVC中controller接收json數(shù)據(jù)的方法
這篇文章主要為大家詳細介紹了SpringMVC中controller接收json數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09
IDEA無法創(chuàng)建JDK1.8版本的Springboot項目問題解決(2種方法)
本文主要介紹了IDEA無法創(chuàng)建JDK1.8版本的Springboot項目問題解決,包含兩種解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
JAVA使用hutool工具實現(xiàn)查詢樹結(jié)構(gòu)數(shù)據(jù)(省市區(qū))
今天通過本文給大家分享JAVA使用hutool工具實現(xiàn)查詢樹結(jié)構(gòu)數(shù)據(jù)(省市區(qū)),代碼分為表結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08
基于spring?@Cacheable?注解的spel表達式解析執(zhí)行邏輯
這篇文章主要介紹了spring?@Cacheable?注解的spel表達式解析執(zhí)行邏輯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
關(guān)于報錯IDEA Terminated with exit code
如果在IDEA構(gòu)建項目時遇到下面這樣的報錯IDEA Terminated with exit code 1,那必然是Maven的設(shè)置參數(shù)重置了,導致下載錯誤引起的,本文給大家分享兩種解決方法,需要的朋友可以參考下2022-08-08
Java實現(xiàn)inputstream流的復制代碼實例
這篇文章主要介紹了Java實現(xiàn)inputstream流的復制代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02

