1. 程式人生 > >Java中的Map集合以及Map集合遍歷例項

Java中的Map集合以及Map集合遍歷例項

文章目錄

一、Map集合

Map<K,V>k是鍵,v是值
1、 將鍵對映到值的物件,一個對映不能包含重複的鍵,每個鍵最多隻能對映的一個值
2、 實現類
 a) HashMap
 b) TreeMap
3、 Map集合和Collection集合的區別
 a) Collection集合儲存元素是單獨出現的,
  Collection集合的子介面Set儲存元素是唯一的,List是可以重複的;
  Collection集合的資料結構是針對元素有效
 b) Map集合儲存元素是成對出現的按照鍵值,
  鍵是唯一的,值是可以重複的,
  Map集合的資料結構值針對鍵有效,與值無關
4、 Map集合的功能概述:
 a) 新增功能
  i. V put(K key,V value);新增元素,
   1. 如果之前無此鍵則新增此鍵值則,並返回null,
   2. 如果有此鍵則將該值替換之前的值,並返回之前的值
 b) 刪除功能
  i. void clear();移除所有的鍵值對元素
  ii. V remove (Object key);根據鍵刪除鍵值對元素,並將值返回
 c) 判斷功能
  i. boolean containsKey(object key);判斷集合是否包含指定的鍵
  ii. boolean containsValue(Object value);判斷集合是否包含指定的值
  iii. boolean isEmpty();判斷集合是否為空
 d) 獲取功能
  i. Set<Map.Entry<K,V>> entrySet();返回的是鍵值對物件的集合
   返回物件集合後可以通過物件獲取鍵和值,
   獲取方法為:物件.getValue()和物件.getKey();
  ii. V get(Object key);根據鍵獲取值
  iii. Set keySet();獲取集合中所有鍵的集合
  iv. Collection values();獲取集合中所有值的集合
 e) 長度功能
  i. int size();返回集合中鍵值對的對數
5、 HashMap<K,V>底層資料結構是雜湊表,執行緒不安全,效率高
 Hashtable<K,V>底層資料結構是雜湊表,執行緒安全,效率低
 a) 基於雜湊表的Map介面實現,雜湊表的作用是用來保證鍵的唯一性
 b) 注意當集合儲存物件元素時需要重寫hashCode()和equals()方法(方法可以自動生成)
6、 LinkedHashMap<K,V>
 a) HashMap的子類,是Map介面的雜湊表和連結串列列表實現,具有可預知的迭代順序(儲存和取出順序一致)
7、 TreeMap<K,V>基於紅黑二叉樹的Map介面實現
 a) 自然排序,無參構造方法(元素具備比較性)
  i. 按照compareTo()方法排序,讓需要比較的元素物件所屬的類實現自然排序介面Comparable,並重寫compareTo()方法
 b) 比較器排序,構造方法public TreeSet(Comparator comparator)(集合具備比較性)
  i. 讓集合的構造方法接收一個比較器介面的子類物件(compareator)(此處的Comparator為介面,需要寫一個介面實現類,在實現類中重寫compare()方法,並在這裡建立介面實現類的物件,可以用匿名內部類來實現)
8、 Map集合的遍歷
 a) 鍵找值
  i. 獲取所有鍵
  ii. 遍歷鍵的集合,得到每一個鍵的值
 b) 鍵值對物件找值和鍵
  i. 遍歷所有的鍵值對物件的集合
  ii. 根據鍵值對物件獲取鍵和值

二、Map集合遍歷例項
package test14_Traversal;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
 * 遍歷:
 * 	1、鍵找值
 * 	2、鍵值物件找鍵和值
 */
public class HashMapDemo {
	public static void main(String[] args) {
		HashMap<String,String> hm=new HashMap<String,String>();
		hm.put("1"
, "Hello"); hm.put("2", "World"); hm.put("3", "ZfLiu"); hm.put("4", "Java"); //鍵找值遍歷 Set<String> set1=hm.keySet(); for(String key:set1) { String value=hm.get(key); System.out.println(key+"--"+value); } System.out.println("----------------------------"); //鍵值物件找鍵和值遍歷 Set<
Map.Entry<String, String>> set2=hm.entrySet(); for(Map.Entry<String, String> me:set2) { System.out.println(me.getKey()+"--"+me.getValue()); } } }

輸出結果:
在這裡插入圖片描述