MAP的使用
文章出處:http://hlpi.cn 作者:興邦開發(fā)部
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)槿绻麑砟憧赡軙l(fā)現(xiàn)使用HashMap不滿足要求,例如HashMap不是線程
安全的,、HashMap對Put到里面的Key沒有排序等,。
如果使用后者則可能需要修改大量的地方
map是接口,不能用new出對象,,hashmap是繼承map接口的實(shí)現(xiàn)類,,可以new出對象
實(shí)現(xiàn)map接口的類都城有如下屬性,,都是把其中數(shù)據(jù)做為key-value來放,即是就說的鍵值對,。
Map map = new HashMap();比HashMap map = new HashMap();寫法更好點(diǎn),,這是多態(tài)的一種體現(xiàn),也是封裝性的一種體現(xiàn),。
第一種可以改為Map map = new HashTable();后面的代碼就不需要改變的,,這樣代碼的變
動就小了,便于開發(fā)和維護(hù),。
如果用HashMap map = new HashMap();就會出現(xiàn)在查找程序中出現(xiàn)的每個(gè)地方來修改,,這樣會加大開發(fā)和維護(hù)的成本。在開發(fā)時(shí)我們盡量讓類或者對象封裝好,,盡量實(shí)現(xiàn)多態(tài),,這樣便于開發(fā)和維護(hù)。
Map.keyset()
Set keys=Map.keyset(),;
Set 是java中一個(gè)存儲不重復(fù)元素,,且無序的集合類。
Map.keyset(),,表示將map對象的所有key值已set集合的形式返回,,因?yàn)閙ap也是無序的,且key值也是不可重復(fù)的,,因此這里用set集合存儲key并返回也符合規(guī)則,。
Map.values方法——獲取Map集合中的所有鍵值對象
該方法用來獲取Map集合中的所有鍵值對象,這些鍵值對象將存放在另一個(gè)集合對象中,。
語法 values()
示例 本示例創(chuàng)建一個(gè)Map集合對象并添加一些內(nèi)容,,然后調(diào)用values方法獲取包
含所有鍵值的集合對象,并輸出這些鍵值信息,。
public static void main(String[] args) {
Map map = new HashMap(); //定義Map集合對象
map.put("apple", "新鮮的蘋果"); //向集合中添加對象
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()); //輸出鍵值對象
}
}