java基礎(八)---map

來源:互聯網
上載者:User

標籤:

MAP

  Map用於儲存具體映射關係的資料,因此Map集合裡儲存著兩組值,一組值用於儲存Map裡的key,另外一組值用於儲存Map裡的value,key和value都可以是任意類型的資料。Map的key不允許重複,即同一個Map對象的任何兩個key通過equals方法比較總是返回false。

map介面定義了如下方法:

V put(K key,V value)    -------------------->添加一個key-value對,如果當前map中已有一個與當前key相等的key-value對,則新的key-value會覆蓋原來的key-value對。V remove(Object key)  --------------------->刪除指定的key所對應的key-value對,返回被刪除key所關聯的value,如果key不存在返回nullvoid clear()                 --------------------->刪除該集合裡的所有key-value對boolean containsKey(Object key)----------->查詢該集合裡是否包含指定的key,如果包含返回trueboolean containsValue(Object value)------->查詢該集合是否包含一個或多個value,如果包含返回trueboolean isEmpty()        -------------------->查詢該集合是否為空白int size()                      ------------------->查詢該集合裡的key-value對的個數Set entrySet()              ------------------->返回該集合中包含的key-value對所組成的set集合,每個集合元素都是map.entry(entry是map的內部類)對象Set keyset()                 ------------------->返回該map中所有key組成的set集合 拓展:MAP中包含一個內部類Entry,該類封裝了一個key-value對。Entry包含如下三個方法:  Object getKey():返回該Entry裡包含的key值。  Object getValue():返回該Entry裡包含的value值。  Object setValue(V value):設定該Entry裡包含的value值,並返回新設定的value值

Map集合的遍曆:


例子:
Map<String,String> hm = new HashMap<String,String>();

hm.put("it002","hello");
hm.put("it003","world");
hm.put("it001","java");

//A:鍵找值
Set<String> set = hm.keySet();//擷取所有鍵的集合
  for(String key : set) {
    String value = hm.get(key);
    System.out.println(key+"---"+value);
}

//B:索引值對對象找鍵和值
Set<Map.Entry<String,String>> set2 = hm.entrySet();//擷取所有的索引值對對象的集合
for(Map.Entry<String,String> me : set2) {
  String key = me.getKey();
  String value = me.getValue();
  System.out.println(key+"---"+value);

}資料結構

ArrayXxx:底層資料結構是數組,查詢快,增刪慢
LinkedXxx:底層資料結構是鏈表,查詢慢,增刪快
HashXxx:底層資料結構是雜湊表。依賴兩個方法:hashCode()和equals()
TreeXxx:底層資料結構是二叉樹。兩種方式排序:自然排序和比較子排序

 HashMap和Hashtable鍵是雜湊表結構,可以保證鍵的唯一性HashMap和Hashtable都是map介面的實作類別,他們之間的關係完全類似於ArrayList和Vector的關係:Hashtable是一個古老的map實作類別,它從JDK1.0開始出現,當時java還沒提供map介面。 HashMap和Hashtable區別:  1.Hashtable是一個安全執行緒的map實現,但HashMap是線程不安全的實現,故HashMap的效能較高  2.Hashtable不允許使用null作為key和value,如果試圖將null放入Hashtable,會報NullPointException異常;但HashMap可放入null作為key或value。 

 Hashtable的一個子類Properties:

   Properties類似Windows操作平台上的ini檔案就是一種屬性檔案。Properties可以把Map對象和屬性檔案管理起來,從而可以把map對象中的key-value對寫入屬性檔案。也可以把屬性檔案裡的內容載入到map對象中,由於屬性檔案裡的屬性名稱、屬性值只能是字串類型,故Properties裡的key、value都是字串類型。

它有如下方法:

String getProperty(String key) :擷取Properties中指定屬性名稱對應的屬性值。

Object setProperty(String key, String value) :設定屬性值,類似於Hashtable的put方法。

void load(Reader reader):從屬性檔案中載入key-value對,把載入的key-value對追加到Properties裡。

void store(OutputStream out, String comments):將Properties的key-value對輸出到屬性檔案裡。

TreeMap鍵是紅/黑樹狀結構結構,可以保證鍵的排序和唯一性 

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.