Java基礎(chǔ)Map集合詳析
一、概述
Interface Map k
:鍵的類型;V:值的類型將鍵映射到值的對(duì)象;不能包含重復(fù)的鍵;每個(gè)鍵可以映射到最多一個(gè)值
二、創(chuàng)建Map集合的對(duì)象方式
- 1.使用多態(tài)的方式
- 2.具體實(shí)現(xiàn)類HashMap
public static void main(String[] args) { ? ? ? //創(chuàng)建Map集合對(duì)象 ? ? ? Map<String,String> m=new HashMap<String,String>(); ? ? ? //添加元素使用put方法,默認(rèn)自然排序 ? ? ? m.put("02","李四"); ? ? ? m.put("04","趙六"); ? ? ? m.put("01","張三"); ? ? ? m.put("03","王五"); ? ? ? System.out.println(m); ? } }
三、Map集合的常用方法
方法名 | 說明 |
---|---|
V put(K key,V value) | 添加元素,添加重復(fù)鍵值元素會(huì)覆蓋 |
V remove(Object key) | 根據(jù)鍵刪除鍵值對(duì)元素 |
void clear() | 清除所有的鍵值對(duì)元素 |
Boolean containsKey(Object key) | 判斷集合是否包含指定的鍵,包含返回true |
Boolean containsValue(Object value) | 判斷集合是否包含指定的值,包含返回true |
Boolean isEmpty() | 判斷集合是否為空 |
int size() | 獲取集合的長(zhǎng)度,也就是鍵值對(duì)的個(gè)數(shù) |
public class MapDemo01 { ? public static void main(String[] args) { ? ? ? //創(chuàng)建Map集合對(duì)象 ? ? ? Map<String,String> m=new HashMap<String,String>(); ? ? ? //添加元素,put方法 ? ? ? m.put("1","張三"); ? ? ? m.put("2","李四"); ? ? ? m.put("3","王五"); ? ? ? m.put("4","趙六"); ? ? ? // System.out.println(m); ? ? ? //根據(jù)鍵刪除鍵值對(duì)元素 ? ? ? System.out.println(m.remove("3"));//切記鍵是什么類型就寫什么類型,不然會(huì)返回null ? ? ? System.out.println(m); ? ? ? //清除所有鍵值對(duì)元素 ? ? ? m.clear(); ? ? ? //Boolean isEmpty()判斷集合是否為空 ? ? ? System.out.println(m.isEmpty()); ? ? ? // System.out.println(m); ? ? ? //Boolean containsKey(Object key);判斷集合中是否包含指定的鍵 ? ? ? System.out.println(m.containsKey("5"));//切記鍵是什么類型就寫什么類型,不然會(huì)返回null ? ? ? //Boolean containsValue(Object value)判斷集合是否包含指定的值,包含返回true ? ? ? System.out.println(m.containsValue("張三")); ? ? ? //int size()獲取集合的長(zhǎng)度,也就是鍵值對(duì)的個(gè)數(shù) ? ? ? System.out.println(m.size()); ? } } ?
四、Map的獲取方法
方法名 | 說明 |
---|---|
V get(Object key) | 根據(jù)鍵獲取值 |
Set<K>keySet() | 獲取所有鍵的集合 |
Collection<V>values() | 獲取所有值的集合 |
Set<Map.Entry<K,V>>entrySet() | 獲取所有鍵值對(duì)對(duì)象的集合 |
public class MapDemo02 { ? public static void main(String[] args) { ? ? ? //創(chuàng)建Map對(duì)象 ? ? ? Map<String,String> m=new HashMap<String,String>(); ? ? ? //添加元素 ? ? ? m.put("1","張三"); ? ? ? m.put("3","李四"); ? ? ? m.put("4","王五"); ? ? ? m.put("2","趙六"); // ? ? ? System.out.println(m); ? ? ? //V get(Object key)根據(jù)鍵獲取值 ? ? ? System.out.println(m.get("3"));//要注意鍵的類型,類型不對(duì)會(huì)報(bào)null ? ? ? //Set<K>keySet()獲取所有鍵的集合,因?yàn)榉祷氐氖莻€(gè)集合,所以用增強(qiáng)for遍歷 ? ? ? Set<String> k=m.keySet(); ? ? ? for (String key:k){ ? ? ? ? ? System.out.println(key); ? ? ? } ? ? ? //Collection<V>values()獲取所有值的集合,注意,他會(huì)按照鍵的排序?qū)χ颠M(jìn)行排序 ? ? ? Collection<String> c=m.values(); ? ? ? for (String v:c){ ? ? ? ? ? System.out.println(v); ? ? ? } ? ? } }
五、Map集合的遍歷方式
方式一:
- 1.先獲取Map集合中的所有鍵的集合,使用方法
setKey()
- 2.遍歷所有鍵的集合獲取每一個(gè)鍵
- 3.通過每一個(gè)鍵獲取相對(duì)應(yīng)的值
getValues
方法
public static void main(String[] args) { ? ? ? //方式一 ? ? ? //創(chuàng)建Map集合對(duì)象 ? ? ? Map<String,String> m=new HashMap<String,String>(); ? ? ? //添加鍵值對(duì) ? ? ? m.put("1","張三"); ? ? ? m.put("3","李四"); ? ? ? m.put("4","王五"); ? ? ? m.put("2","趙六"); ? ? ? //獲取所有鍵的集合 ? ? ? Set<String>s=m.keySet(); ? ? ? //遍歷 ? ? ? for (String key:s){ ? ? ? ? ? //再通過鍵獲取相對(duì)應(yīng)的值 ? ? ? ? ? String value=m.get(key); ? ? ? ? ? System.out.println(key+","+value); ? ? ? } ? } }
方式二:
- 1.獲取所有鍵值對(duì)的集合,使用Set<Map.Entry<K,V>>entrySet()方法
- 2.遍歷這個(gè)集合獲得每一個(gè)鍵值對(duì) 對(duì)象也就是Map.Entry對(duì)象
- 3.再根據(jù)鍵值對(duì)對(duì)象獲取值和鍵
getKey()獲取鍵
getValue()獲取值
public static void main(String[] args) { // ? ? ? //方式一 // ? ? ? //創(chuàng)建Map集合對(duì)象 // ? ? ? Map<String,String> m=new HashMap<String,String>(); // ? ? ? //添加鍵值對(duì) // ? ? ? m.put("1","張三"); // ? ? ? m.put("3","李四"); // ? ? ? m.put("4","王五"); // ? ? ? m.put("2","趙六"); // ? ? ? //獲取所有鍵的集合 // ? ? ? Set<String>s=m.keySet(); // ? ? ? //遍歷 // ? ? ? for (String key:s){ // ? ? ? ? ? //再通過鍵獲取相對(duì)應(yīng)的值 // ? ? ? ? ? String value=m.get(key); // ? ? ? ? ? System.out.println(key+","+value); // ? ? ? } ? ? ? //方式二 ? ? ? //創(chuàng)建Map集合對(duì)象 ? ? ? Map<String,String> m=new HashMap<String,String>(); ? ? ? //添加鍵值對(duì) ? ? ? m.put("1","張三"); ? ? ? m.put("3","李四"); ? ? ? m.put("4","王五"); ? ? ? m.put("2","趙六"); ? ? ? //獲取所有鍵值對(duì)的集合Set<Map.Entry<K,V>>entrySet() ? ? ? Set<Map.Entry<String,String>> s= m.entrySet(); ? ? ? //遍歷該集合 ? ? ? for (Map.Entry<String,String> ss:s){ ? ? ? ? ? //通過鍵值對(duì)對(duì)象獲取鍵值 ? ? ? ? ? String key=ss.getKey(); ? ? ? ? ? //通過鍵值對(duì)對(duì)象獲取值 ? ? ? ? ? String value=ss.getValue(); ? ? ? ? ? System.out.println(key+","+value); ? ? ? ? } ? } }
到此這篇關(guān)于Java基礎(chǔ)Map集合詳析的文章就介紹到這了,更多相關(guān)Java Map集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中的ClassPathXmlApplicationContext源碼詳解
這篇文章主要介紹了Spring中的ClassPathXmlApplicationContext源碼詳解,ApplicationContext的主要實(shí)現(xiàn)類是ClassPathXmlApplicationContext和FileSystemXmlApplicationContext,前者默認(rèn)從類路徑加載配置文件,后者默認(rèn)從文件系統(tǒng)中裝載配置文件,需要的朋友可以參考下2023-12-12Java設(shè)計(jì)模式之動(dòng)態(tài)代理模式實(shí)例分析
這篇文章主要介紹了Java設(shè)計(jì)模式之動(dòng)態(tài)代理模式,結(jié)合實(shí)例形式分析了動(dòng)態(tài)代理模式的概念、功能、組成、定義與使用方法,需要的朋友可以參考下2018-04-04Java工具類實(shí)現(xiàn)高效編寫報(bào)表
對(duì)于報(bào)表數(shù)據(jù)大部分情況下使用寫sql的方式為大屏/報(bào)表提供數(shù)據(jù)來源,但是對(duì)于某些復(fù)雜情況下僅僅使用sql無法實(shí)現(xiàn),這篇文章主要介紹了Java工具類實(shí)現(xiàn)高效編寫報(bào)表2022-11-11解析springboot整合谷歌開源緩存框架Guava Cache原理
本文主要為大家解析了springboot整合谷歌開源緩存框架Guava Cache的原理以及在實(shí)際開發(fā)過程中的使用,附含源碼,有需要的朋友可以參考下2021-08-08