教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

Map集合以及Map集合和Collection集合的區(qū)別

更新時(shí)間:2018年08月06日14時(shí)00分 來(lái)源:傳智播客 瀏覽次數(shù):

  一 、Map:將鍵映射到值的對(duì)象。Map集合沒(méi)有迭代器!Map集合特點(diǎn):該集合存儲(chǔ)鍵值對(duì)。而且鍵是唯一的。

  |--->方法摘要:

  |--->添加:

  V put(K key, V value) 將指定的值與此映射中的指定鍵關(guān)聯(lián)(可選操作)。

  void putAll(Mapm) 從指定映射中將所有映射關(guān)系復(fù)制到此映射中

  |--->刪除:

  void clear() 從此映射中移除所有映射關(guān)系(可選操作)。

  V remove(Object key) 如果存在一個(gè)鍵的映射關(guān)系,則將其從此映射中移除(可選操作)。

  |--->判斷

  boolean containsKey(Object key) 如果此映射包含指定鍵的映射關(guān)系,則返回 true。

  boolean containsValue(Object value) 如果此映射將一個(gè)或多個(gè)鍵映射到指定值,則返回 true。

  boolean isEmpty() 如果此映射未包含鍵-值映射關(guān)系,則返回 true。

  |--->獲取

  int size() 返回此映射中的鍵-值映射關(guān)系數(shù)。

  Collection values() 返回此映射中包含的值的 Collection視圖。

  重點(diǎn):Map集合沒(méi)有迭代器,以下是Map的兩種取出方式:

  第一種:Set keySet()

  返回此映射中包含的鍵的Set視圖,將Map集合中所有的鍵存入Set集合,然后再通過(guò)Set集合的

  迭代器取出所有的鍵,再根據(jù)get方法獲取每個(gè)鍵的值;

  第二種:Set> entrySet()

  返回此映射中包含的映射關(guān)系的Set視圖,將Map集合中的映射關(guān)系存入到Set集合中,

  這個(gè)映射關(guān)系的數(shù)據(jù)類型是Map.entry,再通過(guò)Map.Entry類的方法再要取出關(guān)系里面的鍵和值

  Map.Entry的方法摘要:

  boolean equals(Object o) 比較指定對(duì)象與此項(xiàng)的相等性。

  K getKey() 返回與此項(xiàng)對(duì)應(yīng)的鍵。

  V getValue() 返回與此項(xiàng)對(duì)應(yīng)的值。

  int hashCode() 返回此映射項(xiàng)的哈希碼值。

  V setValue(V value) 用指定的值替換與此項(xiàng)對(duì)應(yīng)的值(特有!!!)。

  二 、Map集合和Collection集合的區(qū)別?

  1,

  Map中一次存儲(chǔ)是鍵值對(duì)。

  Collection中一次存儲(chǔ)是單個(gè)元素。

  2,

  Map的存儲(chǔ)使用的put方法。

  Collection存儲(chǔ)使用的是add方法。

  3,

  Map集合沒(méi)有迭代器,Map的取出,是將Map轉(zhuǎn)成Set,在使用迭代器取出。

  Collection取出,使用就是迭代器。

  4,

  如果對(duì)象很多,必須使用集合存儲(chǔ)。

  如果元素存在著映射關(guān)系,可以優(yōu)先考慮使用Map存儲(chǔ)或者用數(shù)組,

  如果沒(méi)有映射關(guān)系,可以使用Collection存儲(chǔ)。

  8、迭代器:Iterator(Map集合沒(méi)有迭代器)

  (1)迭代器就是取出集合元素的方式

  (2)迭代器的作用

  因?yàn)槊總€(gè)集合中元素的取出方式都不一樣,于是就把元素的取出方式進(jìn)行抽取,并定義在集合內(nèi)部,

  這樣取出方式就可以直接訪問(wèn)集合內(nèi)部的元素;

  而每個(gè)容器的數(shù)據(jù)結(jié)構(gòu)不同,所以取出動(dòng)作的細(xì)節(jié)也不一樣,但是有共性內(nèi)容:判斷和取出。

  那么就將共性內(nèi)容進(jìn)行抽取,從而形成了接口Iterater

  (3)獲取迭代器的方法:

  Iterator iterator() 返回在此 collection 的元素上進(jìn)行迭代的迭代器。

  Iterator iterator() 返回在此 set 中的元素上進(jìn)行迭代的迭代器。

  (3)迭代器方法:

  boolean hasNext() 如果仍有元素可以迭代,則返回 true。

  E next() 返回迭代的下一個(gè)元素。

  void remove() 從迭代器指向的collection中移除迭代器返回的最后一個(gè)元素(可選操作)。

  

  作者:傳智播客JavaEE培訓(xùn)學(xué)院

  首發(fā):http://java.itcast.cn/

0 分享到:
和我們?cè)诰€交談!