1. 程式人生 > >Map和Map.entry詳解

Map和Map.entry詳解

一、Map.Entry說明

Map是java中的介面,Map.Entry是Map的一個內部介面。

Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合entrySet()的返回值也是返回一個Set集合,此集合的型別為Map.Entry。

Map.Entry是Map宣告的一個內部介面,此介面為泛型,定義為Entry<K,V>。它表示Map中的一個實體(一個key-value對)。介面中有getKey(),getValue方法。Map.Entry同時也提供了一個setValue()方法,程式設計師可以使用它修改map裡面的值。

二、Map.Entry使用

通過拿到key值,再返回Map拿value。

Set keys = map.keySet( );
if(keys != null) {
    Iterator iterator = keys.iterator( );
    while(iterator.hasNext( )) 
   {
    Object key = iterator.next( );
    Object value = map.get(key);
    ....
    }
}

通過Map.Entry直接拿key、value。

Set entries = map.entrySet( );
if(entries != null) {
    Iterator iterator = entries.iterator( );
    while(iterator.hasNext( )) {
    Map.Entry entry =iterator.next( );
    Object key = entry.getKey( );
    Object value = entry.getValue();
    ....
}

PS:

Java中的Iterator功能比較簡單,並且只能單向移動:
  (1) 使用方法iterator()要求容器返回一個Iterator。第一次呼叫Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable介面,被Collection繼承。
  (2) 使用next()獲得序列中的下一個元素
  (3) 使用hasNext()檢查序列中是否還有元素
  (4) 使用remove()將迭代器新返回的元素刪除。

二、Map.Entry綜合舉例

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		  Map<String, String> map = new HashMap<String, String>();
		  map.put("1", "value1");
		  map.put("2", "value2");
		  map.put("3", "value3");
		  
		  //第一種:普遍使用,二次取值
		  System.out.println("通過Map.keySet遍歷key和value:");
		  for (String key : map.keySet()) {
		   System.out.println("key= "+ key + " and value= " + map.get(key));
		  }
		  
		  //第二種
		  System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
		  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
		  while (it.hasNext()) {
		   Map.Entry<String, String> entry = it.next();
		   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
		  }
		  
		  //第三種:推薦,尤其是容量大時
		  System.out.println("通過Map.entrySet遍歷key和value");
		  for (Map.Entry<String, String> entry : map.entrySet()) {
		   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
		  }
		 
		  //第四種
		  System.out.println("通過Map.values()遍歷所有的value,但不能遍歷key");
		  for (String v : map.values()) {
		   System.out.println("value= " + v);
		  }
	}

}

執行結果:

參考:https://www.cnblogs.com/a198720/articles/4212034.html

           https://www.cnblogs.com/a198720/articles/4212034.html