欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中HashMap的常見用法詳解

 更新時間:2023年09月08日 08:52:56   作者:強欽欽  
這篇文章主要介紹了Java中HashMap的常見用法詳解,HashMap是Java中的一個常用子類,它是java.util.HashMap<k,v>集合,實現(xiàn)了Map<k,v>接口, HashMap可以存儲鍵值對,通過鍵來快速訪問值,在HashMap中,鍵是唯一的,而值可以重復(fù),需要的朋友可以參考下

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)方法

    SpringBoot過濾器與攔截器深入分析實現(xiàn)方法

    大家應(yīng)該都曉得實現(xiàn)過濾器需要實現(xiàn) javax.servlet.Filter 接口,而攔截器會在處理指定請求之前和之后進行相關(guān)操作,配置攔截器需要兩步,本文通過實例代碼給大家介紹SpringBoot 過濾器和攔截器的相關(guān)知識,感興趣的朋友一起看看吧
    2022-11-11
  • Eclipse不自動編譯java文件的終極解決方法

    Eclipse不自動編譯java文件的終極解決方法

    這篇文章主要介紹了Eclipse不自動編譯java文件的終極解決方法,需要的朋友可以參考下
    2015-12-12
  • javaDSL簡單實現(xiàn)示例分享

    javaDSL簡單實現(xiàn)示例分享

    DSL領(lǐng)域定義語言,用來描述特定領(lǐng)域的特定表達。比如畫圖從起點到終點;路由中的從A到B。這是關(guān)于畫圖的一個簡單實現(xiàn)
    2014-03-03
  • 淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略

    淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略

    這篇文章主要介紹了淺談Java內(nèi)存區(qū)域劃分和內(nèi)存分配策略,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java Lock鎖多線程中實現(xiàn)流水線任務(wù)

    Java Lock鎖多線程中實現(xiàn)流水線任務(wù)

    這篇文章主要介紹了Java Lock鎖多線程中實現(xiàn)流水線任務(wù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java中的代理原理及代理使用示例

    Java中的代理原理及代理使用示例

    這篇文章主要介紹了Java中的代理原理及代理使用示例,本文講解了Java Socket編程中加入代理的2種方法,需要的朋友可以參考下
    2015-03-03
  • 使用jaxp進行dom解析_動力節(jié)點Java學(xué)院整理

    使用jaxp進行dom解析_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了使用jaxp進行dom解析的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 單例模式的反射漏洞和反序列化漏洞代碼實例

    單例模式的反射漏洞和反序列化漏洞代碼實例

    這篇文章主要介紹了單例模式的反射漏洞和反序列化漏洞,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔

    探討Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔

    這篇文章主要介紹了Java 將Markdown文件轉(zhuǎn)換為Word和PDF文檔,本文通過分步指南及代碼示例展示了如何將 Markdown 文件轉(zhuǎn)換為 Word 文檔和 PDF 文件,需要的朋友可以參考下
    2024-07-07
  • JavaWeb連接數(shù)據(jù)庫MySQL的操作技巧

    JavaWeb連接數(shù)據(jù)庫MySQL的操作技巧

    數(shù)據(jù)庫是編程中重要的一部分,它囊括了數(shù)據(jù)操作,數(shù)據(jù)持久化等各方面。在每一門編程語言中都占有相當(dāng)大的比例。本次,小編以MySQL為例,使用mvc編程思想,給大家講解下javaweb對數(shù)據(jù)庫的操作
    2017-02-02

最新評論