73.Map
Map接口的特点:
-
Map与Collection并列存在,用于保存具有映射关系的数据 Key-Value
Map map = new HashMap(); map.put = ("NO1","JACK");//k-v
-
Map中的Key和value可以是任何引用类型的数据,会封装到HashMap&Node对象中
-
Map中的Key不允许重复,原因和HashSet一样,若key相同,则会替换
-
Map中的Value可以重复
-
Map的Key可以为null,Value也可以为null,注意Key为null,只能有一个,但value可以有多个
-
常用String类作为Map的key
-
Key和Value之间存在单向一对一关系,即通过指定的key总能找到对应的value
-
一对k-v是放在一个Node中的,因为Node实现了Entry接口
Map接口方法:
//1.put 添加 map.put("NO1","邓超"; //2.remove 根据健删除映射关系 map.remove("NO1"); //3.get 根据健取得值 Object val = map.get("NO1"); //4.size 获取元素个数 map.size(); //5.isEmpty 判断个数是否为0 map.isEmpty(); //6.clear 清除 map.clear(); //7.containsKey 查找健是否存在 map.containsKey("NO1");
Map六大遍历方式:
//1.第一组:先取出所有的Key,通过Key取出对应的Value Set keyset = map.keySet(); //(1)增强for 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(); //这里可以使用所有的Collections使用的遍历方法 //(1)增强for for (Object value : values){ System.out.println(values); } //(2)迭代器 Iterator iterator = values.iterator(); while (iterator.hasNext()){ Object value = iterator.next(); System.out.println(value); } //第三组:通过EntrySet来获取k-v Set entrySet = map.entrySet(); //(1)增强for for (Object entry : entrySet){ //将entry转成Map.Entry Map.Entry m = (Map.Entry) entry; System.out.println(m.getKey() + "-" + m.getValue()); } //(2)迭代器 Iterator iterator = entrySet.iterator(); while (iterator.hasNext()){ Object entry = iterator.next(); Map.Entry m = (Map.Entry) entry; System.out.println(m.getKey() + "-" + m.getValues()); }