黑馬程序員_Java集合-Map接口

---------------------- android培訓java培訓、期待與您交流! ----------------------

Map接口可以操作兩個值。

比如說:

Key(姓名)   value(電話號碼)

張三        123123

李四        456456

王五        789789

這樣的數據 就可以使用Map存儲。使用的時候根據key值去map中查找與其對應的value值。

Map接口旗下有3個子類:

1. HashMap<K,V>

2. Hashtable<K,V>

3.  TreeMap<K,V>

常用方法:

 

NO.

方法

作用

1

public void clear()

清空所有元素

2

public V put(K key,V value)

設置元素的內容 返回該位置上的舊元素

3

public V get(Object key)

根據提供的鍵(key) 查找值(value)

4

public boolean containsKey(Object key)

查找指定的key是否存在

5

public boolean containsValue(Object value)

查找指定的value是否存在

6

public boolean isEmpty()

判斷集合是否爲空

7

public Set<Map.Entry<K,V>> entrySet()

將全部的元素變成一個Set

8

public Set<K> keySet()

將全部的key變成Set

9

public int size()

獲取結合元素數量

1

public Collection<V> values()

將所有的value變成collection

1

public V remove(Object key)

指定key刪除value

1

public void putAll(Map<? extends K,? extends V> m)

增加一組元素

 

1. HashMap<K,V>

Map中 key值不可以重複。 如果重複了,則新value會覆蓋舊value。

如果使用用戶自定義類做key 則同樣需要同時重寫:hashCode()方法和equals()方法。少一個都不行。

 

如果想完整的使用HashMap<K,V>類那麼最少要重寫equals()和hashCode()方法。

 重寫hashCode()  用於獲得元素的存儲位置。

 重寫equals() 用於在兩個元素的位置相同的時候 比較兩個元素的key是否相等。

2. Hashtable<K,V>

 Hashtable<K,V>和HashMap<K,V>相比 

No.

區別點

HashMap

Hashtable

1

推出版本

JDK1.2

JDK1.0

2

操作

異步操作

同步操作

3

安全性

非線程安全

線程安全

4

性能

比Hashtable 高

 比HashMap 低

3.  TreeMap<K,V>

 

import java.util.*;

public class MapDemo {

    public static void main(String[] args){

       Map<String,String> map = new TreeMap<String,String>();

       map.put("No.1","張三");

       map.put("No.1","李四");

       map.put("No.2","王五");

       map.put("No.3","趙六");

       map.put("No.4","秦七");

       System.out.println(map);

    }

}

程序執行結果:

{No.1=李四, No.2=王五, No.3=趙六, No.4=秦七}

TreeMap類同樣不允許key重複。並且會自動排序。

Map集合的輸出:

在Map中可以保存兩個值。 但是實際上在Map接口內部卻不是直接保存這兩個值。

在Map接口中真正保存的是一個個MapEntry對象。

在一個MapEntry對象保存的纔是map中定義的K和V。

因此在Map中不可以直接使用Iterator接口遍歷。

範例:Iterator遍歷元素。

import java.util.*;

public class MapDemo {

    public static void main(String[] args){

       Map<Person,String> map = new TreeMap<Person,String>();

       map.put(new Person("張三", 20),"No.1");

       map.put(new Person("李四", 21),"No.2");

       map.put(new Person("李四", 21),"No.3");

       map.put(new Person("王五", 64),"No.4");

       Set<Map.Entry<Person, String>> set = map.entrySet();

       Iterator<Map.Entry<Person, String>> iter = set.iterator();

       while(iter.hasNext()){

           Map.Entry<Person, String> temp = iter.next();

           System.out.println(temp.getKey()+"   "+temp.getValue());

       }

    }

}

範例:foreach遍歷元素。

import java.util.*;

public class MapDemo {

    public static void main(String[] args){

       Map<Person,String> map = new TreeMap<Person,String>();

       map.put(new Person("張三", 20),"No.1");

       map.put(new Person("李四", 21),"No.2");

       map.put(new Person("李四", 21),"No.3");

       map.put(new Person("王五", 64),"No.4");

       for(Map.Entry<Person, String> temp : map.entrySet())

           System.out.println(temp.getKey()+"   "+temp.getValue());

    }

}


 

---------------------- android培訓java培訓、期待與您交流! ----------------------

詳細請查看:http://edu.csdn.net/heima

發佈了23 篇原創文章 · 獲贊 12 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章