【Map】Map、HashMap

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

public class Main {
	/**
	 * Map
	 * 1.java.util包
	 * 2.接口 Map<K,V>
	 * 3.映射順序
	 *   某些映射實現可明確保證其順序,如 TreeMap 類
	 *   另一些映射實現則不保證順序    ,如 HashMap 類
	 * 4.key不能重複,但是隻允許key有一個空值
	 * */
	public static void main(String[] args) {
		// 1.生成一個HashMap
		Map<String,String> map1=new HashMap<String,String>();
		
		// 2.添加元素,這個是無順序的
		map1.put("呂布", "奉先");
		map1.put("趙雲", "子龍");
		map1.put("典韋", "無字");
		map1.put("馬超", "孟起");
		map1.put("關羽", "雲長");
		map1.put("關羽", "二爺");    // 同名key,value會覆蓋前面的值
		map1.put(null, "孔明");     // 可以有一個null值
		map1.put(null, "臥龍");
		map1.put("", "龐統");
		map1.put("", "鳳雛");		
		System.out.println(map1);  // {關羽=二爺, null=臥龍, =鳳雛, 呂布=奉先, 典韋=無字, 馬超=孟起, 趙雲=子龍}
		
		// 3.定義另一個map2,放到map1裏面
		Map<String,String> map2=new HashMap<String,String>();
		map2.put("孫尚香","梟姬");
		map2.put("貂蟬", "閉月");
		map1.putAll(map2);
		System.out.println(map1); // {關羽=二爺, null=臥龍, =鳳雛, 呂布=奉先, 典韋=無字, 貂蟬=閉月, 馬超=孟起, 孫尚香=梟姬, 趙雲=子龍}
		
		// 4.通過key獲取value的值,get不到這個key就會返回空
		String str41=map2.get("貂蟬");
		System.out.println("str41 : "+str41);  // 閉月
		String str42=map2.get("西施");
		System.out.println("str42 : "+str42);  // null
		
		// 5.移除key
		String str5=map2.remove("貂蟬");
		System.out.println("str5 : "+str5);        // 閉月
		String str5_1=map2.get("貂蟬");
		System.out.println("str5_1 : "+str5_1);    // null
		System.out.println(map2);  // {孫尚香=梟姬}
		System.out.println(map1);  // {關羽=二爺, null=臥龍, =鳳雛, 呂布=奉先, 典韋=無字, 貂蟬=閉月, 馬超=孟起, 孫尚香=梟姬, 趙雲=子龍}
		
		// 6.拿到map1中的所有key的集合
		// 循環通過key獲取value
		Set<String> set=map1.keySet();
		System.out.println(set);   // [關羽, null, , 呂布, 典韋, 貂蟬, 馬超, 孫尚香, 趙雲]
		for(String str:set) {
			String str6=map1.get(str);
			System.out.println("str6 : "+str6);
			//			str6 : 二爺
//			str6 : 臥龍
//			str6 : 鳳雛
//			str6 : 奉先
//			str6 : 無字
//			str6 : 閉月
//			str6 : 孟起
//			str6 : 梟姬
//			str6 : 子龍
		}
		
		// 7.map1是否包含指定key,指定value,map是否是空的
		boolean b1=map1.containsKey("呂布");
		boolean b2=map1.containsValue("翼德");
		boolean b3=map1.isEmpty();
		System.out.println(b1);  // true
		System.out.println(b2);  // false
		System.out.println(b3);  // false
		
		// 8.另一種循環獲取key value的方法
		// set8相當於Person類的對象,可以使用Person類的方法
		// en  相當於String類的對象,可以使用String類的方法
		Set<Entry<String, String>> set8=map1.entrySet();
		for(Entry<String, String> en:set8) {
			String key  =en.getKey();
			String value=en.getValue();
			System.out.println("key : "+key+", value : "+value);
//			  key : 關羽, value : 二爺
//			  key : null, value : 臥龍
//			  key : , value : 鳳雛
//			  key : 呂布, value : 奉先
//			  key : 典韋, value : 無字
//			  key : 貂蟬, value : 閉月
//			  key : 馬超, value : 孟起
//			  key : 孫尚香, value : 梟姬
//			  key : 趙雲, value : 子龍
		}
	}
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章