黑馬程序員-Java基礎---集合框架-Map

第一講 Map概述&子類對象特色&共性方法數據結構

一、  定義線程

Map集合:該集合存儲鍵值對,一對一對的往裏存,並且要保證鍵是惟一的。若存了重複的鍵,那麼對應此鍵的值將被後一個覆蓋。對象

二、  Map子類對象特色blog

Map集合有以下三個子類:排序

l  Hashtable:底層是哈希表數據結構,不可存入null鍵或null值。線程同步,JDK1.0就有,效率稍低。接口

l  HashMap:底層是哈希表數據結構,能夠存入null鍵或null值。線程同步,JDK1.2出現,效率較高。get

l  TreeMap:底層是二叉樹數據結構,線程不一樣步,能夠用於給Map集合進行排序。同步

三、  Map集合中操做數據的功能io

1)  添加元素table

l  Put(K key , V value)——將一個鍵值對存入Map集合中,若是集合中已存在相同的鍵,返回該鍵對應的值;若是集合中沒有相同的鍵,則返回Null。

l  putAll(Map<? Extends K , ? extends V> m)——將一個Map集合中因此的鍵值存入另外一個Map集合中

2)  刪除

l  Clear()——清空Map集合中;

l  Remove(Object key)——刪除鍵key對應的元素,並返回值;

3)  判讀

l  containsValue(Object value)——按值判斷map集合中是否存在對應的元素;

l  containsKey(Object key)——按鍵判斷map集合中是否存在對應的元素;

l  isEmpty()——判斷Map集合是否爲空;

4)  獲取

get(Object key)——根據鍵獲取map集合中的元素;

size()——獲取map集合中原元素個數;

values()——獲取map集合中全部的值

代碼實現以下:

                      

第二講  Map集合的兩種取出方式:keySetentrySet

一、  獲取Map集合中元素的思路:map中用根據鍵獲取值的方法get(),若是咱們能獲取到集合中全部的鍵,那就能夠利用get()方法來獲取集合中的值了。

二、  利用keyset方式來取出Map集合中的元素

思路:Keyset方法能夠獲取到集合中全部的鍵,並將這些鍵存入Set集合中。而後咱們能夠經過迭代器讀取Set中的鍵,再利用get()獲取每個鍵對應的值。

代碼實現以下:

三、  利用entrySet方式來取出Map集合中的元素

思路:經過entrySet()方法能夠獲取Map集合中的映射關係(Map.Entry<K,V>),並存入Set集合中。經過映射關係接口Map.Entry<K,V>中的getKey()和getValue()方法來獲取關係中的鍵和值。

Map.Entry說明: Entry也是一個接口,它是Map接口中的一個內部接口,並且是靜態的,可經過外部接口直接調用。注意:內部接口由內部類來實現。

代碼實現以下:

四、  練習

題目:每個學生都有對應的歸屬地,學生屬性有:姓名、年齡,當姓名和年齡相同時視爲同一個學生。要保證學生的惟一性

思路:

l  描述學生;

l  定義Map容器,將學生做文 鍵,地址做爲值,存入容器;

l  獲取Map集合中的元素;

代碼實現以下:

 

五、  Map集合擴展

當鍵和值不是一對一關係,而是一對多關係,而多個對象又有鍵值對關係,此時須要利用嵌套map集合的方式存儲。

解決思路:能夠先將多個對象封裝到一個Map集合中,而後再將給集合和鍵存入外面的Map集合中。

代碼實現以下:

 

知識點總結

一、  Map 中的鍵和值都是一對一關係,且鍵在Map中必須是惟一的。若存在一對多的關係時,可使用嵌套map集合的方式進行存儲,即,將多個對象先存放在內嵌map集合中,而後將此集合存入另外一個map集合中。

二、  取得map集合中全部值的方法有以下三種

l  Collection<V> values();

l  keySet方式

思路:先獲取Map集合鍵,而後根據鍵取值。

l  entrySet方式

思路:先獲取Map集合中的映射關係,而後利用獲取的映射關係來獲取Map集合中的值。

相關文章
相關標籤/搜索