1. 程式人生 > 程式設計 >Java中Map的entrySet()使用說明

Java中Map的entrySet()使用說明

由於Map中存放的元素均為鍵值對,故每一個鍵值對必然存在一個對映關係。

Map中採用Entry內部類來表示一個對映項,對映項包含Key和Value

Map.Entry裡面包含getKey()和getValue()方法

Set<Entry<T,V>> entrySet()

該方法返回值就是這個map中各個鍵值對對映關係的集合。

可使用它對map進行遍歷。

Iterator<Map.Entry<Integer,Integer>> it=map.entrySet().iterator();
 while(it.hasNext()) {
 Map.Entry<Integer,Integer> entry=it.next();
 int key=entry.getKey();
 int value=entry.getValue();
 System.out.println(key+" "+value);
 }

補充知識:Map物件中的keyset()、entryset()和Map.Entry

一 Map物件中的keySet()和entrySet()

1. keySet()

public static void main(String[] args) {
 Map<String,String> map = new HashMap<String,String>();
 map.put("01","qwe");
 map.put("02","asd");
 map.put("03","zxc");
 // 先獲取map集合的所有鍵的set集合,即為map中所有key值得集合
 Set<String> keySet = map.keySet();
 // 有了set集合,就可以獲取其迭代器
 Iterator<String> it = keySet.iterator();
 while (it.hasNext()) {
 String key = it.next();
 // 有了鍵可以通過map集合的get方法獲取其對應的值
 String value = map.get(key);
 // 獲得key和value值
 System.out.println("key:" + key + "-->value:" + value);
 }
}

keySet()返回的是map物件的key值的set集合

2. entrySet()

public static void main(String[] args) {
 Map<String,"zxc");
 // 通過entrySet()方法將map集合中的對映關係取出(這個關係就是Map.Entry型別)
 Set<Map.Entry<String,String>> entrySet = map.entrySet();
 // 將關係集合entryset進行迭代,存放到迭代器中
 Iterator<Map.Entry<String,String>> it2 = entrySet.iterator();
 while (it2.hasNext()) {
  // 獲取Map.Entry關係物件me
  Map.Entry<String,String> me = it2.next();
  // 通過關係對像獲取key
  String key2 = me.getKey();
  // 通過關係對像獲取value
  String value2 = me.getValue();
  System.out.println("key:" + key2 + "-->value:" + value2);
 }
 }

entrySet()返回對映所包含的對映關係的Set集合(一個關係就是一個鍵-值對),就是把(key-value)作為一個整體一對一對地存放到Set集合當中的。

3.總結

雖然使用keyset及entryset來進行遍歷能取得相同的結果,但兩者的遍歷速度是有差別的。

keySet():迭代後只能通過get()取key;再根據key值取value。

entrySet():迭代後可以e.getKey(),e.getValue()取key和value。

同時,keySet()的速度比entrySet()慢了很多,也就是keySet方式遍歷Map的效能不如entrySet效能好

為了提高效能,以後多考慮用entrySet()方式來進行遍歷。

二 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物件的常用方法除了以上兩種外,還有一種是單純的遍歷value值。Map有一個values方法,返回的是value的Collection集合。通過遍歷Collection也可以遍歷value。

public static void main(String[] args) {
 Map<String,"zxc");
 // 建立一個Collection集合,存放map的value值
 Collection<String> c = map.values();
 // 通過遍歷Collection也可以遍歷value
 Iterator<String> it = c.iterator();
 // 該方法只能遍歷value值,不能遍歷key值
 while (it.hasNext()) {
  Object value = it.next();
  System.out.println("value:" + value);
 }
 }

在遍歷Map物件時,先從Map物件中取出key值之後,還必須每次重複返回到Map中取得相對的值,這是很繁瑣和費時的。

幸運的是,Map類提供了一個稱為entrySet()的方法,這個方法返回一個Map.Entry例項化後的物件集。 接著,Map.Entry類提供了一個getKey()方法和一個getValue()方法。

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();
    //
}
}

儘管增加了一行程式碼,我們卻省略了許多對Map不必要的“get”呼叫。同時,提供給開發人員一個同時保持了關鍵字和其對應的值的類。Map.Entry同時也提供了一個setValue()方法,程式設計師可以使用它修改map裡面的值。

以上這篇Java中Map的entrySet()使用說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。