java Map及Map.Entry的使用


Map接口不是Collection接口的繼承。Map接口用於維護鍵/值對(key/value pairs)。該接口描述了從不重復的鍵到值的映射。

  (1) 添加、刪除操作:
  Object put(Object key, Object value): 將互相關聯的一個關鍵字與一個值放入該映像。如果該關鍵字已經存在,那么與此關鍵字相關的新值將取代舊值。方法返回關鍵字的舊值,如果關鍵字原先並不存在,則返回null
  Object remove(Object key): 從映像中刪除與key相關的映射
  void putAll(Map t): 將來自特定映像的所有元素添加給該映像
  void clear(): 從映像中刪除所有映射
  “鍵和值都可以為null。但是,您不能把Map作為一個鍵或值添加給自身。”
  (2) 查詢操作:
  Object get(Object key): 獲得與關鍵字key相關的值,並且返回與關鍵字key相關的對象,如果沒有在該映像中找到該關鍵字,則返回null
  boolean containsKey(Object key): 判斷映像中是否存在關鍵字key
  boolean containsValue(Object value): 判斷映像中是否存在值value
  int size(): 返回當前映像中映射的數量
  boolean isEmpty() :判斷映像中是否有任何映射
  (3) 視圖操作 :處理映像中鍵/值對組
  Set keySet(): 返回映像中所有關鍵字的視圖集
  “因為映射中鍵的集合必須是唯一的,您用Set支持。你還可以從視圖中刪除元素,同時,關鍵字和它相關的值將從源映像中被刪除,但是你不能添加任何元素。”
  Collection values():返回映像中所有值的視圖集
  “因為映射中值的集合不是唯一的,您用Collection支持。你還可以從視圖中刪除元素,同時,值和它的關鍵字將從源映像中被刪除,但是你不能添加任何元素。”
  Set entrySet(): 返回Map.Entry對象的視圖集,即映像中的關鍵字/值對
  “因為映射是唯一的,您用Set支持。你還可以從視圖中刪除元素,同時,這些元素將從源映像中被刪除,但是你不能添加任何元素。”

Map.Entry接口 Map.Entry是Map聲明的一個內部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個實體(一個key-value對)。接口中有getKey(),getValue方法。
  Map的entrySet()方法返回一個實現Map.Entry接口的對象集合。集合中每個對象都是底層Map中一個特定的鍵/值對。

  通過這個集合的迭代器,您可以獲得每一個條目(唯一獲取方式)的鍵或值並對值進行更改。當條目通過迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的條目的setValue()方法,其余對源Map外部的修改都會導致此條目集變得無效,同時產生條目行為未定義。
  (1) Object getKey(): 返回條目的關鍵字
  (2) Object getValue(): 返回條目的值
  (3) Object setValue(Object value): 將相關映像中的值改為value,並且返回舊值。

由此可以得到兩種遍歷Map的方法

1、傳統方法:

Map map = new HashMap(); 
           Set  keySet= map.keySet();
           Irerator iterator = keySet.iterator;
           while(iterator.hasNext()) {
                   Object key = iterator.next();
                   Object value = map.get(key);
           }

2、使用Map.Entry

Map map = new HashMap();
           Irerator iterator = map.entrySet().iterator();
           while(iterator.hasNext()) {
                   Map.Entry entry = iterator.next();
                   Object key = entry.getKey();
           }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM