目錄
1. HashSet的全面說明
2. Map接口實現類的特點
注意:講的是JDK8的Map接口特點
3. Map接口的常用方法
4. Map遍歷方法
1. HashSet的全面說明
1. HashSet實現了Set接口
2. HashSet實際上是HashMap
3. 可以存放null值,但是只能有一個null
4. HashSet不保證元素是有序的,取決于hash后,再確定索引的結果
5. 不能保證重復元素/對象,在前面Set接口使用已經講過
2. Map接口實現類的特點
注意:講的是JDK8的Map接口特點
1. Map與Collection并列存在,用于保存具有映射關系的數據:k-v
2. Map中的key和value可以是任何引用類型的數據,會封裝到HashMap$Node對象中
3. Map中的key不允許重復,原因和HashSet一樣
4. Map的key可以是null,value也可以為null,注意key為null,只能有一個(key不能重復),value為null,可以多個。
5. Map中的value可以重復
6. 常用String類作為Map的key
7. key和value之間存在單向一對一關系,通過指定的key總能找到對應的value
8. Map存放數據的key-value示意圖,一對一k-v是放在一個Node中的,有因為Node實現了Entry接口,有些書上也說 一對k-v就是一個Entry
3. Map接口的常用方法
1. put:添加?
2. remove:根據鍵刪除映射關系
3. get:根據鍵獲取值
4. size:獲取元素個數
5. isEmpty:判斷個數是否為0
6. clear: 清除
7. containsKey: 查找鍵是否存在
// map的常用方法Map map = new HashMap();map.put("鄧超",new Book("",100));map.put("鄧超","孫儷");map.put("鄧超","孫儷");map.put("王寶強","馬蓉");map.put("六",null);map.put(null,"劉亦菲");System.out.println("map="+map);// remove 根據鍵刪除映射關系map.remove(null);System.out.println("map="+map);// get:根據鍵獲取值Object o = map.get("六");System.out.println("val="+o);//size :獲取元素個數System.out.println("k-v="+map.size());// isEmpty:判斷個數是否為0System.out.println(map.isEmpty());//clear:清除k-vmap.clear();System.out.println("map="+map);//containsKey:查找鍵是否存在System.out.println(map.containsKey("王寶強"));
4. Map遍歷方法
Map map = new HashMap();map.put("鄧超", new Book("", 100));map.put("鄧超", "孫儷");map.put("鄧超", "孫儷");map.put("王寶強", "馬蓉");map.put("六", null);map.put(null, "劉亦菲");// 第一組:先取出 所有的Key,通過Key取出對應的ValueSet keySet = map.keySet();// 增強forSystem.out.println("=====第一種=====");for (Object key : keySet) {System.out.println(key + "-" + map.get(key));}// 2. 迭代器Iterator iterator = keySet.iterator();while (iterator.hasNext()) {Object key = iterator.next();System.out.println(key + "-" + map.get(key));//第二組:把所有的values取出Collection values = map.values();//可以使用所有Collection使用的所有遍歷方法// 增強forSystem.out.println("====取出所有的values for===");for (Object value : values) {System.out.println(value);}// 迭代器System.out.println("====取出所有的values 迭代器===");Iterator iterator1 = values.iterator();while (iterator1.hasNext()) {Object value = iterator1.next();System.out.println(value);}// 第三組 通過EntrySet來獲取 k-vSet entrySet = map.entrySet();// 增強forSystem.out.println("====取出所有的values for 第三種方式===");for (Object entry :entrySet) {// 將entry轉成Map.EntryMap.Entry m = (Map.Entry) entry;System.out.println(m.getKey()+"-"+m.getValue());}//迭代器System.out.println("====取出所有的values 迭代器 第四種方式===");Iterator iterator2 = entrySet.iterator();while (iterator2.hasNext()) {Object entry = iterator2.next();//System.out.println(next.getClass());// hashmapnode -- 實現了 map.entryMap.Entry m =(Map.Entry) entry;System.out.println(m.getKey()+"-"+m.getValue());