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ù)鍵查詢值
獲取所有鍵的集合
遍歷鍵的集合,獲取每一個(gè)鍵
根據(jù)鍵,查詢值
方式2,根據(jù)鍵值對(duì)的對(duì)象查詢鍵和值
獲取所有鍵值對(duì)的對(duì)象的集合
遍歷鍵值對(duì)的對(duì)象的集合,獲取到每一個(gè)鍵值對(duì)的對(duì)象
根據(jù)鍵值對(duì)的對(duì)象,查詢鍵和值
方式1,根據(jù)鍵查詢值
/* * Map集合的遍歷,根據(jù)鍵查詢值 * * 思路: * A:獲取所有的鍵 * B:遍歷鍵的集合,獲取得到每一個(gè)鍵 * C:根據(jù)鍵查詢值 * */
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
* Map集合的遍歷,根據(jù)鍵查詢值
*
* 思路:
* A:獲取所有的鍵
* B:遍歷鍵的集合,獲取得到每一個(gè)鍵
* C:根據(jù)鍵查詢值
* */
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ù)鍵查詢值
String value = map.get(key);
System.out.println(key + "---" + value);
}
}
}
方式2,根據(jù)鍵值對(duì)的對(duì)象查詢鍵和值
/* * Map集合的遍歷,根據(jù)對(duì)象查詢鍵和值 * * 思路: * 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ì)象查詢鍵和值
*
* 思路:
* 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用自定義的類作為HashMap的key值實(shí)例
- java HashMap,TreeMap與LinkedHashMap的詳解
- java面試題——詳解HashMap和Hashtable 的區(qū)別
- AngularJS操作鍵值對(duì)象類似java的hashmap(填坑小結(jié))
- java使用hashMap緩存保存數(shù)據(jù)的方法
- 全面解析Java中的HashMap類
- 剖析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-10
Java9新特性對(duì)HTTP2協(xié)議支持與非阻塞HTTP?API
這篇文章主要為大家介紹了Java9新特性對(duì)HTTP2協(xié)議的支持與非阻塞HTTP?API,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(56)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-08-08
Java 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-11
SpringBoot集成極光推送完整實(shí)現(xiàn)代碼
本文主要介紹了SpringBoot集成極光推送完整實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Java中==與equals()及hashcode()三者之間的關(guān)系詳解
最近也是在讀Hollis的《深入理解Java核心技術(shù)》里面一節(jié)講到了equals()和hashcode()的關(guān)系,對(duì)于這個(gè)高頻面試點(diǎn),咱們需要認(rèn)真理清一下幾者之間的關(guān)系2022-10-10

