1. 程式人生 > >Java HashMap 集合筆記

Java HashMap 集合筆記

需要匯入的包


import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

HashMap的基本方法

		//泛型 <>  表示儲存資料的型別
		//<Integer,String>,表示key是Integer  value是String
		
		Map<Integer,String> map = new HashMap<Integer,String>();	
		
		map.put(1,"第一名");
		map.put(2,"第二名");
		map.put(3,"第三名");
		map.put(4,"第四名");
		
		int size = map.size();	//Map集合 對映的數量
		System.out.println("mapsize()="+size);		//輸出結果:4
		
		//獲取所有的key,返回型別為Set
		Set<Integer> keys = map.keySet();		//Set介面 
		System.out.println("map.keySet()="+ keys);		//輸出結果:[1,2,3,4]
		
		//獲得所有的value,返回型別為
		Collection<String> values = map.values();		//Collection介面 	
		System.out.println("map.values():" + values);		
		//輸出結果:[第一名, 第二名, 第三名, 第四名]
		
		//map.get(key)  獲取key為 2,對應的value值
		System.out.println(map.get(2));		//輸出結果:第二名
		//如果key或者value為空,則返回 null 
		System.out.println(map.get(10));	//輸出結果:null
		
		//遍歷Map集合
		map.forEach((k,v)->{
			System.out.println(k+":"+v);
		});
		/*輸出結果:
		 * 
		 *  1:第一名
			2:第二名
			3:第三名
			4:第四名
		 * 
		 * */
		System.out.println();
		
		//map.remove(key) 根據key移除map中的與該key相關的對映,
		map.remove(4);
		map.forEach((k,v)->{
			System.out.println(k+":"+v);
		});
		/*輸出結果:
		 * 
		 *  1:第一名
			2:第二名
			3:第三名
		 * 
		 * */
		System.out.println();
		
		//map1.putAll(map2)//把一個map2集合合併到另一個map1集合裡,若key有重複的,則map2的鍵值覆蓋與map1重複的鍵值
		//map.clear();//清空Map集合中所有的鍵值,清空後,map.size()為0
		

遍歷HashMap


		//Map.Entry
		//Entry是Map集合的一個內部介面,用於封裝Map集合的一組鍵值(key和value)
		//可通過entrySet()一次性同時獲取key和value
		
		Map<Integer,String> map2 = new HashMap<Integer,String>();
		map2.put(1,"First");
		map2.put(2,"Second");
		map2.put(3,"Third");
		map2.put(4,"Fourth");
		
		//遍歷Map方法1,二次取值,效率最慢
		for(Integer key : map2.keySet()) {
			System.out.println(key+" : "+map2.get(key));
		}
		
		
		//遍歷Map方法2
		map2.forEach((k,v)->{
			System.out.println(k+":"+v);
		});
		
		
		//遍歷Map方法3	//只取一次 速度最快
		System.out.println("通過Map.entrySet()使用iterator遍歷key和value:"); 
		
		Map.Entry<Integer, String> entry;
		
		//Iterator只能在Collection集合中使用,不能在Map中使用,可通過Map的keySet() entrySet() 使用Iterator
		
		Iterator<Entry<Integer, String>> it = map2.entrySet().iterator();		
		while(it.hasNext()) {
			entry = it.next();
			System.out.println( entry.getKey() + " : " + entry.getValue() ); 
		}
		
		//遍歷Map方法4
		System.out.println("通過Map.entrySet遍歷key和value");
		
		for(Map.Entry<Integer,String> entry2 : map2.entrySet()) {
			System.out.println( entry2.getKey() + " : " + entry2.getValue() );
		}
		
		//Map.entrySet()迭代器會生成Entry Iterator,其返回的例項是一個包含key/value鍵值對的物件。
		//而keySet()中迭代器返回的只是key物件,還需要到map中二次取值。故entrySet()要比keySet()快一倍左右。
		

參考連結:https://blog.csdn.net/songfeihu0810232/article/details/80156626
參考連結:https://blog.csdn.net/weixin_41763995/article/details/80223244