Java Map集合知多少?

Map集合可以存儲鍵值對,在開發中使用相當方便,所以整理一下。
這裏寫圖片描述

1.基本概念

Map(K,V):將鍵映射到值的對象接口,一個映射不能包含重複的鍵;每個鍵最多隻能映射到一個值。
###2.常用方法

(1).添加功能

// 將指定的值與此映射中的指定鍵關聯
V put(K key, V value)
// 從指定映射中將所有映射關係複製到此映射中
void putAll(Map<? extends K,? extends V> m)

         //子類對象實現接口
		 Map<Integer, String> map = new HashMap<Integer, String>();
		 Map<Integer, String> map2 = new HashMap<Integer, String>();
		 //添加鍵值對
		 map.put(0, "A");
		 map.put(1, "B");
		 map.put(2, "C");
		 System.out.println(map);//{0=A, 1=B, 2=C}
		
		 map2.put(7, "A");
		 map2.put(8, "B");
		 map2.put(9, "C");
		 //添加map集合
		 map.putAll(map2);
		 System.out.println(map);//{0=A, 1=B, 2=C, 7=A, 8=B, 9=C}

(2).刪除功能

// 如果存在一個鍵的映射關係,則將其從此映射中移除
V remove(Object key)
// 如果存在鍵值對的映射關係,則將其從此映射中移除
boolen remove(key, value)
// 從此映射中移除所有映射關係
void clear()

        Map<Integer, String> map = new HashMap<Integer, String>();
		// 添加鍵值對
		map.put(0, "A");
		map.put(1, "B");
		map.put(2, "C");
		// 通過key刪除 鍵值對元素
		map.remove(0);
		// 通過key value 刪除鍵值對元素
		map.remove(2, "C");
		System.out.println(map);// {1=B}

(3).判斷功能

// 如果此映射未包含鍵-值映射關係,則返回 true
boolean isEmpty()
// 如果此映射包含指定鍵的映射關係,則返回 true
boolean containsKey(Object key)
// 如果此映射將一個或多個鍵映射到指定值,則返回 true
boolean containsValue(Object value)

	     Map<Integer, String> map = new HashMap<Integer, String>();
		 // 添加鍵值對
		 map.put(0, "A");
		 map.put(1, "B");
		 map.put(2, "C");
		 // 判斷是否爲空
		 boolean b = map.isEmpty();
		 System.out.println(b);// false
		 //判斷是否包含key爲3的元素
		 boolean bb = map.containsKey(3);
		 System.out.println(bb);// false
		 //判斷是否包含valuae爲"A"的元素
		 boolean bbb = map.containsValue("A");
		 System.out.println(bbb);// true

(4).獲取功能

// 返回指定鍵所映射的值;如果此映射不包含該鍵的映射關係,則返回 null
V get(Object key)
// 返回此映射中包含的鍵的 Set
Set(K) keySet()
// 返回此映射中包含的值的 Collection
Collection(V) values()
// 返回此映射中包含的映射關係的 Set
Set(Map.Entry(K,V)) entrySet()
// 返回此映射中的鍵-值映射關係數
int size()

         Map<Integer, String> map = new HashMap<Integer, String>();
		 // 添加鍵值對
		 map.put(0, "A");
		 map.put(1, "B");
		 map.put(2, "C");
		
		 //獲取長度
		 int size=map.size();
		 System.out.println(size);//3
		
		 //通過鍵獲取值
		 String values=map.get(1);
		 System.out.println(values);//B
		
		 //獲取所有鍵
		 Set<Integer> set=map.keySet();
		 System.out.println(set);//[0, 1, 2]
		
		 //獲取所有values
		 Collection<String> collection=map.values();
		 System.out.println(collection);//[A, B, C]
		
		 //獲取所有映射關係
		 Set<Map.Entry<Integer,String>> maps=map.entrySet();
		 System.out.println(maps);//[0=A, 1=B, 2=C]

3.集合遍歷

(1).鍵找值

         User key1=new User("一一", 11);
		 User key2=new User("二二", 22);
		 User key3=new User("三三", 33);
		 //自定義對象爲Key
		 Map<User,Integer> map=new HashMap<User, Integer>();
		 //添加鍵值對
		 map.put(key1,1);
		 map.put(key2,2);
		 map.put(key3,3);

		// 增強for循環
		for (User user : map.keySet()) {
			// 獲取值
			Integer integer = map.get(user);
			System.out.println("key:" + user + " value:" + integer);
			// 注意:
			// key:User [name=二二, age=22] value:2
			// key:User [name=三三, age=33] value:3
			// key:User [name=一一, age=11] value:1
		}

(2).鍵值對對象

Map.Entry(K,V)鍵值對對象方法:
// 比較指定對象與此項的相等性
boolean equals(Object o)
// 返回與此項對應的鍵
K getKey()
// 返回與此項對應的值
V getValue()
// 返回此映射項的哈希碼值
int hashCode()
// 用指定的值替換與此項對應的值
V setValue(V value)

		 User key1=new User("一一", 11);
		 User key2=new User("二二", 22);
		 User key3=new User("三三", 33);
		 //自定義對象爲Key
		 Map<User,Integer> map=new HashMap<User, Integer>();
		 //添加鍵值對
		 map.put(key1,1);
		 map.put(key2,2);
		 map.put(key3,3);
		
		 Set<Map.Entry<User, Integer>> set = map.entrySet();
		 for (Entry<User, Integer> entry : set) {
			User key = entry.getKey();
			Integer value = entry.getValue();
			System.out.println("key:" + key + "  value:" + value);
			// key:User [name=二二, age=22] value:2
			// key:User [name=三三, age=33] value:3
			// key:User [name=一一, age=11] value:1
		}

4.主要實現類

(1).HashMap

HashMap:基於哈希表的Map接口的實現。此類不保證映射的順序,特別是它不保證該順序恆久不變,無序,實現不是同步的。

(2).TreeMap

TreeMap:根據其鍵的自然順序進行排序,或者根據創建映射時提供的Comparator進行排序,具體取決於使用的構造方法, 有序,實現不是同步的。

自然排序:

        Map<String, Integer> map = new TreeMap<String, Integer>();
		// 添加鍵值對
		map.put("yiyi", 1);
		map.put("erer", 2);
		map.put("sansan", 3);

		System.out.println(map);//{erer=2, sansan=3, yiyi=1}

比較器排序:

        Users key1 = new Users("一一", 11);
		Users key2 = new Users("二二", 22);
		Users key3 = new Users("三三", 33);
		Users key4 = new Users("三三", 33);
		// 比較器排序
		Map<Users, Integer> map = new TreeMap<Users, Integer>(
				new Comparator<Users>() {

					public int compare(Users o1, Users o2) {
						// 指定排序規則
						return o1.name.compareTo(o2.name);
					}
				});
		// 添加鍵值對
		map.put(key1, 1);
		map.put(key2, 2);
		map.put(key3, 3);
		map.put(key4, 3);
		System.out.println(map);// {Users [name=一一, ager=11]=1, Users [name=三三, ager=33]=3, Users [name=二二, ager=22]=2}

注:更多方法查看API

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章