Map集合
该集合存储键值对,一对一对存储,而且要保证键的唯一性1,添加。
put(K key, V value)当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回
putAll(Map<? extends K,? extends V> m)
2,删除。
clear()
remove(Object key)
3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取。
get(Object key)//可以通过get方法的返回值来判断一个件是否存在,是否为null
size()
values()
重点:
entrySet()
keySet()
Map的子类
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。在jdk1.0.版本出现,效率低。
|--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。用于替代hashtable,出现于jdk1.2.效率高。
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
Map类似于Set,Set底层就是使用了Map集合
常见操作示例:
import java.util.*; class MapDemo { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("01","haha1"); map.put("02","haha2"); map.put("03","haha3"); map.put("03","ha哈哈哈");//当往同一个键上存入了两个值,原有的值会被新的值替换,并由put方法返回 sop("containsKey:"+map.containsKey("001")); //sop("remove: "+map.remove("02")); sop("get: "+map.get("020"));//没有则返回null map.put("04",null); sop("get: "+map.get("04"));//可以通过get方法的返回值来判断一个件是否存在,是否为null sop(map);//获取map集合中所有的值 } }
map集合两种取出方式:keySet和entrySet
1,keySet:将map集合转成set集合再通过迭代器取出
————即:将map中所有的键存入到Set集合。因为Set具备迭代器,可以通过迭代方式获取所有的键,再根据get方法,获取每个键对应的值
2,entrySet:
————Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中;这个关系的数据类型是Map.Entry,
Map.Entry中的 Entry是一个接口,是Map接口的一个内部接口
示例
import java.util.*; class MapDemo2 { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("01","haha01"); map.put("04","haha04"); map.put("03","haha03"); map.put("02","haha02"); //entrySet Set<Map.Entry<String,String>> entrySet = map.entrySet();//将Map集合中映射关系取出,存入到Set集合 Iterator<Map.Entry<String,String>> it = entrySet.iterator(); while (it.hasNext()) { Map.Entry<String,String> me = it.next(); String key = me.getKey(); //getKey和getValue是Map.Entry<K,V>的方法 String value = me.getValue(); // sop("key= "+key+" , value= "+value); } //keySet Set<String> keySet = map.keySet();//①获取map集合所有键的Set集合,keySet(); Iterator<String> it = keySet.iterator();//②通过Set集合迭代器获取键值 while (it.hasNext()) { String key = it.next(); String value = map.get(key);//③通过键值获取其对应的值 sop("key= "+key+" ,value= "+value); } } }
Map.Entry
Entry是Map接口的一个内部接口
在源码中的实现示例:
interface Map { public static interface Entry //内部接口,static是定义在局部的,所以看到静态接口一定是内部接口 { public abstract Object getKey(); public abstract Object getValue(); } } class HashMap implements Map { class Haha implements Map.Entry //内部类,实现接口的内部类 { public Object getKey(){}; public Object getValue(){}; } }
图解: