MAP的使用
文章出處:http://w56ti4.cn 作者:興邦開發(fā)部 人氣: 發(fā)表時(shí)間:2016年11月04日
Map的 屬性
Map map=new HashMap() 理解
Map是接口,hashMap是Map的一種實(shí)現(xiàn)。接口不能被實(shí)例化。 Map map=new HashMap(); 就是將map實(shí)例化成一個(gè)hashMap。這樣做的好處是調(diào)用者不需要知道m(xù)ap具體的實(shí)現(xiàn),map接口與具體實(shí)現(xiàn)的映射java幫你做了。打個(gè)比方,A是一個(gè)頭頭,手下有幾個(gè)人:張三,李四等等。A需要手下做一件事情,A關(guān)心的是有沒有人做,而不關(guān)心到底是誰去做,A只需要喊一聲:“來人!”具體的是哪個(gè)人進(jìn)來幫你做事無所謂。 如果說這樣寫
HashMap map = new HashMap();就相當(dāng)于你指定要張三做事:“來張三!
前者好,因?yàn)槿绻麑砟憧赡軙?huì)發(fā)現(xiàn)使用HashMap不滿足要求,例如HashMap不是線程
安全的、HashMap對(duì)Put到里面的Key沒有排序等。
如果使用后者則可能需要修改大量的地方
map是接口,不能用new出對(duì)象,hashmap是繼承map接口的實(shí)現(xiàn)類,可以new出對(duì)象
實(shí)現(xiàn)map接口的類都城有如下屬性,都是把其中數(shù)據(jù)做為key-value來放,即是就說的鍵值對(duì)。
Map map = new HashMap();比HashMap map = new HashMap();寫法更好點(diǎn),這是多態(tài)的一種體現(xiàn),也是封裝性的一種體現(xiàn)。
第一種可以改為Map map = new HashTable();后面的代碼就不需要改變的,這樣代碼的變
動(dòng)就小了,便于開發(fā)和維護(hù)。
如果用HashMap map = new HashMap();就會(huì)出現(xiàn)在查找程序中出現(xiàn)的每個(gè)地方來修改,這樣會(huì)加大開發(fā)和維護(hù)的成本。在開發(fā)時(shí)我們盡量讓類或者對(duì)象封裝好,盡量實(shí)現(xiàn)多態(tài),這樣便于開發(fā)和維護(hù)。
Map.keyset()
Set keys=Map.keyset();
Set 是java中一個(gè)存儲(chǔ)不重復(fù)元素,且無序的集合類。
Map.keyset(),表示將map對(duì)象的所有key值已set集合的形式返回,因?yàn)閙ap也是無序的,且key值也是不可重復(fù)的,因此這里用set集合存儲(chǔ)key并返回也符合規(guī)則。
Map.values方法——獲取Map集合中的所有鍵值對(duì)象
該方法用來獲取Map集合中的所有鍵值對(duì)象,這些鍵值對(duì)象將存放在另一個(gè)集合對(duì)象中。
語法 values()
示例 本示例創(chuàng)建一個(gè)Map集合對(duì)象并添加一些內(nèi)容,然后調(diào)用values方法獲取包
含所有鍵值的集合對(duì)象,并輸出這些鍵值信息。
public static void main(String[] args) {
Map map = new HashMap(); //定義Map集合對(duì)象
map.put("apple", "新鮮的蘋果"); //向集合中添加對(duì)象
map.put("computer", "配置優(yōu)良的計(jì)算機(jī)");
map.put("book", "堆積成山的圖書");
Collection values = map.values(); //獲取Map集合的value集合
for (Object object : values) {
System.out.println("鍵值:" + object.toString()); //輸出鍵值對(duì)象
}
}