1.map集合中有 建 ,建頭有個對應的值(映射),數據結構
一個映射不能包含重複的鍵spa
每一個鍵最多隻能映射到一個值code
2.Map和Collection接口的不一樣,對象
map是雙列集合,Collection是單列集合blog
Map的鍵是惟一,Collection的子系Set是惟一的排序
Map集合的數據結構只針對鍵有效 接口
3.當集合中建重複時,對應的值取到的內容是最後一次添加進去的內容rem
1 //返回值被覆蓋的內容 2 //第一次添加值時,集合中沒有數據,被覆蓋的內容爲null,因此返回null 3 Map<String, Integer> map = new HashMap<>(); 4 map.put("a", 1); 5 map.put("a", 3); //此時輸出,返回值是1 6 map.put("f", 4); 7 map.put("t", 2); 8 System.out.println(map);//輸出結果爲 {a=3, t=2, f=4} 9 map.size(); //長度 10 map.remove("a"); //刪除指定鍵,與映射值 11 map.containsKey("a"); //是否包含鍵爲"a"的的內容 12 map.containsValue(2); //是否包含值爲2的內容 13 map.clear(); //清空 14 map.isEmpty(); //是否爲空 15 16 }
3.Map的遍歷get
第一種hash
1 /* 2 * 1,首先得到到map中全部鍵, 3 * 2.在經過鍵得到對應的內容 4 */ 5 Map<String, Integer> map = new HashMap<>(); 6 map.put("a", 1); 7 map.put("a", 3); //此時輸出,返回值是1 8 map.put("f", 4); 9 map.put("t", 2); 10 11 /* 12 * 先把鍵都添加到set集合中, 13 * 在使用set集合的迭代器, 14 * 經過get方法,在獲取對應的值 15 */ 16 Set<String> set = map.keySet(); 17 Iterator<String> it = set.iterator(); 18 while(it.hasNext()) { 19 String s = it.next(); 20 Integer a = map.get(s); 21 System.out.println(a+ " "); 22 }
第二種遍歷方式
1 HashMap<String, Integer> map = new HashMap<>(); 2 map.put("a", 1); 3 map.put("a", 3); // 此時輸出,返回值是1 4 map.put("f", 4); 5 map.put("t", 2); 6 // 獲取鍵值對對象 7 Set<Map.Entry<String, Integer>> set = map.entrySet(); 8 // 迭代器 9 Iterator<Map.Entry<String, Integer>> it = set.iterator(); 10 while (it.hasNext()) { 11 // 獲取到每一個鍵值對對象 12 Map.Entry<String, Integer> en = it.next(); 13 String s = en.getKey(); 14 Integer i = en.getValue(); 15 System.out.println(s + " " + i); 16 }
第三種
缺點不能刪除
1 for (Map.Entry<String, Integer> entry : set) { 2 System.out.println(entry.getKey() + " " + entry.getValue()); 3 }
用加強for循環遍歷
須要重寫hashcode,和equals方法
保證怎麼存怎麼取的集合
排序去重複 treeset和treemap的功能是同樣的
遍歷自定義對象時,要記得Comparable