java HashMap詳解及實(shí)例代碼
java HashMap
/* * Map集合的特點(diǎn) * 將鍵映射值的對(duì)象,一個(gè)映射不能包含重復(fù)的值;每個(gè)鍵最多只能映射到一個(gè)值 * * Map集合和Collection集合的區(qū)別? * Map集合存儲(chǔ)元素是成對(duì)出現(xiàn)的,Map集合的鍵是唯一的,就是可重復(fù)的??梢园堰@個(gè)理解為:夫妻對(duì) * Collection集合存儲(chǔ)元素是單獨(dú)出現(xiàn)的,Collection的兒子Set是唯一的,List是可重復(fù)的,可以把這個(gè)理解為:光棍 * * 注意: * Map集合的數(shù)據(jù)結(jié)構(gòu)值針對(duì)鍵有效,限值無(wú)效 * Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對(duì)元素有效 * * Map集合的功能概述: * 1:添加功能 * V put(K key,V value);//添加元素 * 如果鍵是第一次存儲(chǔ),就直接存儲(chǔ)元素,返回null * 如果鍵不是第一次存儲(chǔ),就用值把以前的值替換掉,返回以前的值 * * 2:刪除功能 * void clear();//移除所有的鍵值對(duì)元素 * V remove(Object key);//根據(jù)鍵刪除鍵值對(duì)元素,并把值返回 * * 3:判斷功能 * boolean containsKey(Object key);//判斷集合是否包含指定的鍵 * boolean containsValue(Object value);//判斷集合是否包含指定的值 * boolean isEmpty();//判斷集合是否為空 * * 4:獲取功能 * set<Map,Entry<E,V>> entrySet();獲取鍵值對(duì)的對(duì)象集合 * V get(Object key);//根據(jù)鍵獲取值 * Set<K> keySet();//獲取集合中所有鍵的集合 * Collection<V> values();//獲取集合中所有值的集合 * * 5:長(zhǎng)度功能 * int size();//返回集合中的鍵值對(duì)的對(duì)數(shù) * */
Map集合的遍歷
方式1,根據(jù)鍵查詢(xún)值
獲取所有鍵的集合
遍歷鍵的集合,獲取每一個(gè)鍵
根據(jù)鍵,查詢(xún)值
方式2,根據(jù)鍵值對(duì)的對(duì)象查詢(xún)鍵和值
獲取所有鍵值對(duì)的對(duì)象的集合
遍歷鍵值對(duì)的對(duì)象的集合,獲取到每一個(gè)鍵值對(duì)的對(duì)象
根據(jù)鍵值對(duì)的對(duì)象,查詢(xún)鍵和值
方式1,根據(jù)鍵查詢(xún)值
/* * Map集合的遍歷,根據(jù)鍵查詢(xún)值 * * 思路: * A:獲取所有的鍵 * B:遍歷鍵的集合,獲取得到每一個(gè)鍵 * C:根據(jù)鍵查詢(xún)值 * */
import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map集合的遍歷,根據(jù)鍵查詢(xún)值 * * 思路: * A:獲取所有的鍵 * B:遍歷鍵的集合,獲取得到每一個(gè)鍵 * C:根據(jù)鍵查詢(xún)值 * */ public class IntegerDemo { public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> map = new HashMap<String, String>(); map.put("hello", "world"); map.put("java", "c++"); map.put("sql", "os"); System.out.println(map); // A:獲取所有的鍵 Set<String> set = map.keySet(); // B:遍歷鍵的集合,獲取得到每一個(gè)鍵 for (String key : set) { // C:根據(jù)鍵查詢(xún)值 String value = map.get(key); System.out.println(key + "---" + value); } } }
方式2,根據(jù)鍵值對(duì)的對(duì)象查詢(xún)鍵和值
/* * Map集合的遍歷,根據(jù)對(duì)象查詢(xún)鍵和值 * * 思路: * A:獲取所有的鍵值對(duì)對(duì)象的集合 * B:遍歷鍵值對(duì)對(duì)象的集合,得到每一個(gè)鍵值對(duì)的對(duì)象 * C:獲取鍵和值 * */
import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map集合的遍歷,根據(jù)對(duì)象查詢(xún)鍵和值 * * 思路: * A:獲取所有的鍵值對(duì)對(duì)象的集合 * B:遍歷鍵值對(duì)對(duì)象的集合,得到每一個(gè)鍵值對(duì)的對(duì)象 * C:獲取鍵和值 * */ public class IntegerDemo { public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> map = new HashMap<String, String>(); map.put("hello", "world"); map.put("java", "c++"); map.put("sql", "os"); System.out.println(map); // A:獲取所有的鍵值對(duì)對(duì)象的集合 Set<Map.Entry<String, String>> set = map.entrySet(); // B:遍歷鍵值對(duì)對(duì)象的集合,得到每一個(gè)鍵值對(duì)的對(duì)象 for (Map.Entry<String, String> me : set) { // C:獲取鍵和值 String key = me.getKey(); String value = me.getValue(); System.out.println(key + "---" + value); } } }
/* * 1:HashMap和Hashtable的區(qū)別? * HashMap線程不安全,效率高,允許null鍵和null值 * Hashtable線程安全,效率低,不允許null鍵和null值 * * 2:List,Set,Map等接口是否都繼承于Map接口? * List,Set不是繼承自Map接口,它們繼承自Collection接口 * Map接口本身就是一個(gè)頂層接口 * */ import java.util.HashMap; import java.util.Hashtable; public class IntegerDemo { public static void main(String[] args) { // TODO Auto-generated method stub HashMap<String, String> hm = new HashMap<String, String>(); Hashtable<String, String> ht = new Hashtable<String, String>(); hm.put("hello", "world"); hm.put("java", "c++"); hm.put(null, "sql"); ht.put("hello", "world"); ht.put("java", "c++"); ht.put(null, "sql");// Exception in thread "main" // java.lang.NullPointerException } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- java HashMap內(nèi)部實(shí)現(xiàn)原理詳解
- 在Java8與Java7中HashMap源碼實(shí)現(xiàn)的對(duì)比
- 詳解Java HashMap實(shí)現(xiàn)原理
- java 中HashMap、HashSet、TreeMap、TreeSet判斷元素相同的幾種方法比較
- Java用自定義的類(lèi)作為HashMap的key值實(shí)例
- java HashMap,TreeMap與LinkedHashMap的詳解
- java面試題——詳解HashMap和Hashtable 的區(qū)別
- AngularJS操作鍵值對(duì)象類(lèi)似java的hashmap(填坑小結(jié))
- java使用hashMap緩存保存數(shù)據(jù)的方法
- 全面解析Java中的HashMap類(lèi)
- 剖析Java中HashMap數(shù)據(jù)結(jié)構(gòu)的源碼及其性能優(yōu)化
- java HashMap擴(kuò)容詳解及實(shí)例代碼
相關(guān)文章
解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問(wèn)題
這篇文章主要介紹了解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01在SpringBoot: SpringBoot里面創(chuàng)建導(dǎo)出Excel的接口教程
這篇文章主要介紹了在SpringBoot: SpringBoot里面創(chuàng)建導(dǎo)出Excel的接口教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10Java9新特性對(duì)HTTP2協(xié)議支持與非阻塞HTTP?API
這篇文章主要為大家介紹了Java9新特性對(duì)HTTP2協(xié)議的支持與非阻塞HTTP?API,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(56)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-08-08Java EasyExcel實(shí)現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式
EasyExcel是一個(gè)基于Java的、快速、簡(jiǎn)潔、解決大文件內(nèi)存溢出的Excel處理工具,下面我們就來(lái)學(xué)習(xí)一下EasyExcel如何實(shí)現(xiàn)導(dǎo)出多sheet并設(shè)置單元格樣式吧2023-11-11SpringBoot集成極光推送完整實(shí)現(xiàn)代碼
本文主要介紹了SpringBoot集成極光推送完整實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Java中==與equals()及hashcode()三者之間的關(guān)系詳解
最近也是在讀Hollis的《深入理解Java核心技術(shù)》里面一節(jié)講到了equals()和hashcode()的關(guān)系,對(duì)于這個(gè)高頻面試點(diǎn),咱們需要認(rèn)真理清一下幾者之間的關(guān)系2022-10-10