Map接口
概述
用来存储键值对,如果键值相同,后边的value将前边的value覆盖
主要实现类:
HashMap:底层实现哈希表,查询快,添加快,无序
key:无序,唯一,即HashSet(HashSet的底层即HashMap,HashSet只使用了HashMap键部分,值部分为一个空对象)
value:无序,不唯一,Collection
LinkedHashMap:底层结构哈希表+链表,查询快,添加快,有序(添加顺序)
key:有序(添加顺序),唯一,LinkedHashSet
value:无序,不唯一,Collection
TreeMap:底层实现红黑树,速度介于哈希表和线性表之间,有序(自然顺序)
key:有序(自然顺序)唯一,类似TreeSet
value:无序,不唯一,Collection
对Map的遍历:
- Map中元素,可以将key序列、value序列单独抽取出来
抽取key:使用keySet()抽取key序列,将map中的所有keys生成一个Set。
抽取value:使用values()抽取value序列,将map中的所有values生成一个Collection。
-
两种遍历方式:
1)先得到由所有的key组成的set,遍历set的过程中,根据每个key得到所有的value。
测试代码:
//得到key的集合 Set<String> keySet = map.keySet(); //增强for循环遍历set,根据key得到value for(String key : keySet) { System.out.println(map.get(key)); } //迭代器遍历set,根据key得到value Iterator<String> it = keySet.iterator(); while(it.hasNext()) { System.out.println(map.get(it.next())); }
2)先得到所有的由key-value组成的set,遍历set的过程中,输出每个元素(key-value)的内容。
//得到key-value的集合,遍历set //通过Entry对key-value进行封装,Entry为Map的一个内部集合 Set<Entry<String, String>> entrySet = map.entrySet(); Iterator<Entry<String, String>> itt = entrySet.iterator(); //迭代器 while(itt.hasNext()) { Entry<String, String> entry = itt.next(); System.out.println(entry.getKey() + "is" + entry.getValue()); } //增强的for循环 for(Entry<String, String> entry : entrySet) { System.out.println(entry.getKey() + "ai" + entry.getValue()); }
注意:
在Map中没有迭代器