Java -- HashSet的全面说明-Map接口的常用方法-遍历方法
目录
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());