java---Map介面實作類別

來源:互聯網
上載者:User

標籤:als   end   obj   添加元素   []   nsvalue   compareto   其他   結構   

  Map是一個雙列集合介面,如果實現了Map介面,特點是資料以索引值對形式存在,鍵不可重複,值可以重複。java中主要有HashMap、TreeMap、Hashtable。本文主要介紹Map的介面方法:

1 HashMap、TreeMap、Hashtable

HashMap的儲存原理:

  HashMap 底層也是基於雜湊表實現的。往HashMap添加元素的時候,首先會調用鍵的hashCode方法得到元素 的雜湊碼值,然後經過運算就可以算出該元素在雜湊表中的儲存位置。

  情況1: 如果算出的位置目前沒有任何元素儲存,那麼該元素可以直接添加到雜湊表中。

  情況2:如果算出 的位置目前已經存在其他的元素,那麼還會調用該元素的equals方法與這個位置上的元素進行比較,如果equals方法返回 的是false,那麼該元素允許被儲存,如果equals方法返回的是true,那麼該元素被視為重複元素,不允儲存。

TreeMap儲存原理:

  TreeMap也是基於紅/黑樹狀結構(二叉樹)資料結構實現 的, 特點:會對元素的鍵進行排序儲存。

  TreeMap 要注意的事項:
  1. 往TreeMap添加元素的時候,如果元素的鍵具備自然順序,那麼就會按照鍵的自然順序特性進行排序儲存。
  2. 往TreeMap添加元素的時候,如果元素的鍵不具備自然順序特性, 那麼鍵所屬的類必須要實現Comparable介面,把鍵的比較規則定義在CompareTo方法上。
  3. 往TreeMap添加元素的時候,如果元素的鍵不具備自然順序特性,而且鍵所屬的類也沒有實現Comparable介面,那麼就必須在建立TreeMap對象的時候傳入比較子。

Hashtable儲存原理:

  底層也是hash表實現,實現方式和HashMap一致,但是hashTable是安全執行緒的,操作效率低。

  http://www.cnblogs.com/K-artorias/p/7090314.html 連結進去,文章講了hashMap和hashTable的區別。

2 Map介面的方法:
添加:
  put(K key, V value)
  putAll(Map<? extends K,? extends V> m)   
刪除
  remove(Object key)
  clear()

擷取:
  get(Object key)
  size()
判斷:
  containsKey(Object key)
  containsValue(Object value)
  isEmpty()

以下是上述介面方法的代碼舉例:

 1 public class Demo2 { 2      3     public static void main(String[] args) { 4         Map<String,String> map = new HashMap<String, String>(); 5         //添加方法 6         map.put("A", "a"); 7         map.put("B", "b"); 8         map.put("C","c"); 9         10         /*11         添加12         System.out.println("傳回值:"+map.put("A","@"));  // 如果之前沒有存在該鍵,那麼返回的是null,如果之前就已經存在該鍵了,那麼就返回該鍵之前對應 的值。13         Map<String,String> map2 = new HashMap<String, String>();14         map2.put("M", "m");15         map2.put("N", "n");16         map.putAll(map2); // 把map2的元素添加到map集合中。17         18         */19         20         /*21         刪除22         System.out.println("刪除的資料是:"+map.remove("A")) ;  //根據鍵刪除一條map中的資料,返回的是該鍵對應 的值。23         map.clear(); //清空集合中的所有資料。24         */25         26         /* 擷取27         System.out.println("根據指定 的鍵擷取對應的值:"+ map.get("B"));28         System.out.println("擷取map集合索引值對個數:"+map.size());29         30         31         判斷32         System.out.println("判斷map集合是否包含指定的鍵:"+ map.containsKey("B"));33         System.out.println("判斷map集合中是否包含指定 的值:"+ map.containsValue("c"));34         map.clear();35         System.out.println("判斷map集合是否為空白元素:"+ map.isEmpty());36         */37         System.out.println("集合的元素:"+ map);38         39         40     }41 42 }

 

java---Map介面實作類別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.