更新時(shí)間:2018年08月06日14時(shí)00分 來源:傳智播客 瀏覽次數(shù):
一 、Map:將鍵映射到值的對(duì)象。Map集合沒有迭代器!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
重點(diǎn):Map集合沒有迭代器,以下是Map的兩種取出方式:
第一種:Set
返回此映射中包含的鍵的Set視圖,將Map集合中所有的鍵存入Set集合,然后再通過Set集合的
迭代器取出所有的鍵,再根據(jù)get方法獲取每個(gè)鍵的值;
第二種:Set
返回此映射中包含的映射關(guān)系的Set視圖,將Map集合中的映射關(guān)系存入到Set集合中,
這個(gè)映射關(guān)系的數(shù)據(jù)類型是Map.entry,再通過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集合沒有迭代器,Map的取出,是將Map轉(zhuǎn)成Set,在使用迭代器取出。
Collection取出,使用就是迭代器。
4,
如果對(duì)象很多,必須使用集合存儲(chǔ)。
如果元素存在著映射關(guān)系,可以優(yōu)先考慮使用Map存儲(chǔ)或者用數(shù)組,
如果沒有映射關(guān)系,可以使用Collection存儲(chǔ)。
8、迭代器:Iterator(Map集合沒有迭代器)
(1)迭代器就是取出集合元素的方式
(2)迭代器的作用
因?yàn)槊總€(gè)集合中元素的取出方式都不一樣,于是就把元素的取出方式進(jìn)行抽取,并定義在集合內(nèi)部,
這樣取出方式就可以直接訪問集合內(nèi)部的元素;
而每個(gè)容器的數(shù)據(jù)結(jié)構(gòu)不同,所以取出動(dòng)作的細(xì)節(jié)也不一樣,但是有共性內(nèi)容:判斷和取出。
那么就將共性內(nèi)容進(jìn)行抽取,從而形成了接口Iterater
(3)獲取迭代器的方法:
Iterator
Iterator
(3)迭代器方法:
boolean hasNext() 如果仍有元素可以迭代,則返回 true。
E next() 返回迭代的下一個(gè)元素。
void remove() 從迭代器指向的collection中移除迭代器返回的最后一個(gè)元素(可選操作)。
作者:傳智播客JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itcast.cn/
北京校區(qū)