Java集合Map介面學習

來源:互聯網
上載者:User

Map介面用於儲存元素對(鍵和值)

Map介面中的方法
    equals(Object o)
    hashCode
    clear()
    remove(Object key)
    put(Object key,Object value)
    putAll(Map t)
    entrySet  返回 Map 中所包含映射的 Set 視圖。 Set 中的每個元素都是一個 Map.Entry 對象,可以使用 getKey() 和 getValue() 方法(還有一個 setValue() 方法)訪問後者的鍵元素和值元素
    keySet()返回 Map 中所包含鍵的 Set 視圖。 刪除 Set 中的元素還將刪除 Map 中相應的映射(鍵和值)
    values()返回 map 中所包含值的 Collection 視圖。 刪除 Collection 中的元素還將刪除 Map 中相應的映射(鍵和值)

    get(Object key)返回與指定鍵關聯的值
    containsKey(Object key) true or false;
    containsValue(Object value) true or false;
    isEmpty()
    size()
1. HashMap
HashMap提供所有可選的映射操作,並允許使用 null 值和 null 鍵,除了非同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同

注意,此實現不是同步的。如果多個線程同時訪問一個雜湊映射,而其中至少一個線程從結構上修改了該映射,則它必須 保持外部同步。這一

般通過對自然封裝該映射的對象進行同步操作來完成。如果不存在這樣的對象,則應該使用 Collections.synchronizedMap 方法來“封裝”該映射。最好在建立時完成這一操作,以防止對映射進行意外的非同步訪問,如下所示:
Map m = Collections.synchronizedMap(new HashMap(...));

A: 遍曆HashTable, 使用entrySet介面
   

Java代碼 {
dp.sh.Toolbar.CopyToClipboard(this);return false;
}" href="http://www.javaeye.com/topic/421014#">
  1. Map<String,Integer> map=new HashMap<String,Integer>();   
  2. map.put("1", 1);   
  3. map.put("2", 2);   
  4. map.put("3", 3);   
  5. map.put("3", 3);   
  6.      
  7. Iterator itor=map.entrySet().iterator();   
  8. while(itor.hasNext()){   
  9.   Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();   
  10.   System.out.println("key="+entry.getKey().toString());   
  11.   System.out.println("values="+entry.getValue().toString());   
  12. }   
       Map<String,Integer> map=new HashMap<String,Integer>();       map.put("1", 1);       map.put("2", 2);       map.put("3", 3);       map.put("3", 3);                Iterator itor=map.entrySet().iterator();       while(itor.hasNext()){         Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();         System.out.println("key="+entry.getKey().toString());         System.out.println("values="+entry.getValue().toString());       }    

B: 遍曆HashTable, 使用keySet 和 values介面
      

Java代碼 {
dp.sh.Toolbar.CopyToClipboard(this);return false;
}" href="http://www.javaeye.com/topic/421014#">
  1. Set<String> keys=map.keySet();   
  2. Iterator itor=keys.iterator();   
  3. while(itor.hasNext()){   
  4.     Object key=itor.next();   
  5.     System.out.println("key="+key.toString());   
  6.     System.out.println("value="+map.get(key).toString());   
  7.  }   
  8.   
  9. Collection co=map.values();   
  10. Iterator itor=co.iterator();   
  11. while(itor.hasNext()){   
  12.     System.out.println("value="+itor.next());   
  13.  }   
       Set<String> keys=map.keySet();       Iterator itor=keys.iterator();       while(itor.hasNext()){        Object key=itor.next();        System.out.println("key="+key.toString());        System.out.println("value="+map.get(key).toString());        }       Collection co=map.values();       Iterator itor=co.iterator();       while(itor.hasNext()){        System.out.println("value="+itor.next());        }       

Hashtable和HashMap的區別:
1.Hashtable是Dictionary的子類,HashMap是Map介面的一個實作類別;
2.Hashtable中的方法是同步的,而HashMap中的方法在預設情況下是非同步的。即是說,在多線程應用程式中,不用專門的操作就安全地可以
使用Hashtable了;而對於HashMap,則需要額外的同步機制。但HashMap的同步問題可通過Collections的一個靜態方法得到解決:
Map Collections.synchronizedMap(Map m)
這個方法返回一個同步的Map,這個Map封裝了底層的HashMap的所有方法,使得底層的HashMap即使是在多線程的環境中也是安全的。
3.在HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。當get()方法返回null值時,即可以表示
HashMap中沒有該鍵,也可以表示該鍵所對應的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵,而應該用
containsKey()方法來判斷。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.