33、Map简介
Map接口概述
除了Collection之外,常用的集合還有Map接口,里面常用的實現類圖如下:
map中的元素是以鍵-值的方式存在的,通過鍵可以獲取到值,鍵是不可以重復的,跟地圖比較像,通過一個坐標就可以找到具體的位置。
package com.sutaoyu.Map;import java.util.Collection; import java.util.HashMap; import java.util.Map;public class Map_test_1 {public static void main(String[] args) {Map<Integer,String> map = new HashMap();String s1 = map.put(1001, "成龍");map.put(1002, "周潤發");map.put(1003, "周星馳");//將1001 成龍替換掉,并且返回被替換的成龍String s2 = map.put(1001, "房祖名");System.out.println(s1);System.out.println(s2);//判斷是否包含傳入的鍵System.out.println(map.containsKey(1002));//判斷是否包含傳入的值System.out.println(map.containsValue("周星馳"));//獲取map的大小 System.out.println(map.size());//將map中的值返回Collection<String> c = map.values();System.out.println(c);System.out.println(map);//刪除鍵是1001的數據并且將值返回 String s3 = map.remove(1001);System.out.println(s3);} }Map的遍歷
方式一:Map中的keySet()返回的是一個包含所有鍵的Set類型的對象,通過鍵獲取值
package com.sutaoyu.Map;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set;public class Map_test_2 {public static void main(String[] args) {Map<Integer, String> map = new HashMap<>();map.put(1001, "成龍");map.put(1002, "周潤發");map.put(1003, "周星馳");map.put(1004, "劉德華");// 通過鍵獲取值String s = map.get(1004);System.out.println(s);// 獲取map中所有的鍵返回給SetSet<Integer> keySet = map.keySet();//遍歷set獲取鍵,根據鍵獲取值Iterator<Integer> iter = keySet.iterator();while(iter.hasNext()) {Integer key = (Integer)iter.next();System.out.println("鍵:" + key + ",值:" + map.get(key));}使用增強for循環遍歷for(Integer key : map.keySet()) {System.out.println("鍵:" + key + ",值:" + map.get(key));}} }方式二:Map中的鍵和值被封裝成了Entry對象,并存儲在Set集合中,通過entrySet()可以獲取到這個Set集合。
package com.monkey1024.map;import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set;/*** Map的遍歷**/ public class MapTest03 {public static void main(String[] args) {Map<Integer, String> map = new HashMap<>();map.put(1001, "成龍");map.put(1002, "周潤發");map.put(1003, "周星馳");map.put(1004, "劉德華");//鍵和值被封裝成了Entry對象,并存儲在Set集合中Set<Map.Entry<Integer,String>> entrySet = map.entrySet();Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();while(it.hasNext()) {//獲取每一個Entry對象Entry<Integer,String> en = it.next(); //根據鍵值對對象獲取鍵Integer key = en.getKey(); //根據鍵值對對象獲取值String value = en.getValue(); System.out.println("鍵:" + key + ",值:" + value);}//增強for循環for (Entry<Integer, String> en : map.entrySet()) {System.out.println("鍵:" + en.getKey() + ",值:" + en.getValue());}} }LinkedHashMap
LinkedHashMap的特點:存取順序一致
package com.monkey1024.map;import java.util.LinkedHashMap;/*** LinkedHashMap簡介**/ public class MapTest04 {public static void main(String[] args) {LinkedHashMap<Integer,String> lhm = new LinkedHashMap<>();lhm.put(1003, "周星馳");lhm.put(1004, "劉德華");lhm.put(1001, "成龍");lhm.put(1002, "周潤發");System.out.println(lhm);} }TreeMap
TreeMap的特點:可以對存儲的元素進行排序
package com.monkey1024.map;import java.util.TreeMap;/*** TreeMap簡介**/ public class MapTest05 {public static void main(String[] args) {TreeMap<Integer,String> tm = new TreeMap<>();tm.put(1003, "周星馳");tm.put(1004, "劉德華");tm.put(1001, "成龍");tm.put(1002, "周潤發");System.out.println(tm);} }HashMap和Hashtable的區別
Hashtable是JDK1.0版本出現的,是線程安全的,效率低,不可以存儲null鍵和null值
HashMap是JDK1.2版本出現的,可以存儲null鍵和null值
?
轉載于:https://www.cnblogs.com/zhuifeng-mayi/p/10136768.html
總結
- 上一篇: Mac安装Open CC进行繁简转化
- 下一篇: Y组合子