Map集合的基本使用

Map集合的基本使用

1. Map雙邊隊列

1.1 什麼是Map
鍵(Key)值(Value)對
	鄧超 = 娘娘 
	貝克漢姆 = 維多利亞
	黃磊 = 孫莉
	吳京 = 謝楠

表格:
	姓名:騷磊
	年齡:16
	性別:男
	
程序開發大部分數據都是鍵值對形式的
	MySQL JSON XML 類對象成員變量和存儲的數據
	從前端發送的數據也可以轉成Map格式 ==> 一鍵生成 ==> 類對象 ==> 一鍵存儲 ==> 數據庫
	
interface Map<K, V>
--| class HashMap<K, V> 哈希表結構
--| class TreeMap<K, V> 底層是樹形結構,存儲要求K有對應的排序方式
	Map雙邊隊列中鍵(Key)是唯一的,但是值(Value)可以重複
1.2 Map<K, V>雙邊隊列方法
增:
	put(K k, V v);
		存入一個鍵值對類型,K和V都要符合泛型約束
	putAll(Map<? extends K, ? extends V> map);
		存入另一個Map雙邊隊列,並且要求添加的Map雙邊對接中的K和V都要和當前Map中存儲
		的K和V一致
刪:
	remove(Object k);
		刪除對應K的鍵(Key)值(Value)對
改:
	put(K k, V v);
		對應當前K存在,修改對應內容
查:
	int size();
		當前Map雙邊隊列中,有效鍵值對個數
	boolean isEmpty();	
		是否爲空
	boolean containsKey(Object key);
		判斷指定的Key是否存在
	boolean containsValue(Object value);
		判斷指定Value是否存在
	Set<K> keySet();
		返回整個Map雙邊隊列中所有Key對應的Set集合
		【注意】一個方法使用set結尾,表示該方法返回的是一個集合類型,大多是情況下都
		是Set類型
	Collection<V> values();
		返回整個Map雙邊隊列中所有Value對應的Collection集合
		【注意】方法名如果是一個複數,返回值類型集合或者是數組情況居多
1.3 EntrySet
Entry 可以認爲是鍵值對對象
定義在Map類內
	class Entry<K, V> {
		K k;
		V v;
	}
	K,V是完全依賴於Map約束的,這裏可以Entry裏面保存的是每一個鍵值對類對象

Map中提供了一個方法
	Set<Entry<K, V>> entrySet
	返回值是鍵值對類對象Set集合
	Set集合中存儲的是Entry類型
	Entry類型是帶有泛型的
package com.qfedu.b_map;

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

public class Demo2 {
	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		
		map.put("吳京", "謝楠");
		map.put("鄧超", "娘娘");
		map.put("黃磊", "孫莉");
		map.put("王寶強", "XX");
		
		Set<Map.Entry<String, String>> entrySet = map.entrySet();
		
		System.out.println(entrySet);
	}
}
1.4 TreeMap<K, V> 以及Comparable和Comparator
K是需要有對應的比較方式,如果沒有比較方式,無法存入。

推薦使用Comparator接口
package com.qfedu.b_map;

import java.util.Comparator;
import java.util.TreeMap;

public class Demo3 {
	public static void main(String[] args) {
		TreeMap<String,String> map = new TreeMap<String, String>();
		
		map.put("李四", "1");
		map.put("王五", "1");
		map.put("趙六", "1");
		map.put("張三", "1");
		
		System.out.println(map);
		
		TreeMap<Dog,String> map2 = new TreeMap<Dog, String>(new Comparator<Dog>() {

			@Override
			public int compare(Dog o1, Dog o2) {
				return o1.getAge() - o2.getAge();
			}
		});
		
		map2.put(new Dog("王可可", 1), "111"); 
		map2.put(new Dog("八公", 2), "111"); 
		map2.put(new Dog("豆豆", 3), "111"); 
		map2.put(new Dog("老黃", 4), "111"); 
		map2.put(new Dog("旺財", 5), "111"); 
		
		System.out.println(map2);
		
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章