Map(和Collection接口同级的接口)集合
1.简述:该集合用于存储键值对,一对一对的往里存,但要保证键的唯一性
2.Map接口的子类对象
|--HashTable:底层是哈希表数据结构,不可以存入null键和null值,线程同步,效率低
|--HashMap:底层是哈希表数据结构,可以存入null键和null值,线程不同步,效率高
|--TreeMap:底层是二叉树数据结构,线程不同步,可以对Map集合中的元素进行排序
和set接口的集合很像,事实上set集合底层就是用了Map集合
3.共性方法
(1)增加 put(Key key,Value value) putAll(Map<? extends k,? extends v>m) (2)删除 clear() remove(Object key) (3)判断 containsValue(Object value) containsKey(Object key) (4)获取 get(Object key) size() values()
重要方法
Set<key> keySet():
将Map中的所有键存入到set集合中,因为set具备迭代器
所有通过迭代器方式取出的键,都可通过get()方法来获取对应的值
Set<Map.Entry<K,V>> entrySet():
将Map集合中的所有映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry
public class MapDemo { public static void main(String[] args) { Map<String, String> map=new HashMap<String, String>(); //添加元素时,如果添加的key相同,则key对应的后面的value值会覆盖前面的旧值,并且,put()方法 //会返回原来的旧值,和新添加的新值 /* System.out.println( map.put("01","张三旧值")); System.out.println( map.put("01","张三新值"));*/ map.put("01","张三"); map.put("02","李四"); map.put("03","王五"); //System.out.println(map); //将map集合中的映射关系取出,存入到Set集合中 Set<Map.Entry<String, String>> mapEntries=map.entrySet(); Iterator<Map.Entry<String, String>> iterator=mapEntries.iterator(); while(iterator.hasNext()) { Map.Entry<String, String> meEntry=iterator.next();//获取Set集合中的映射关系 String key=meEntry.getKey();//获取映射关系中的key值 String value=meEntry.getValue();//获取映射关系中的value值 System.out.println(key+" : "+value); } // Map.Entry其实也是一个接口,是Map接口中的内部接口 /* //keySet()方法,获取所有的key集合,并存入到set集合中 Set<String> set=map.keySet(); Iterator<String> iterator=set.iterator(); while(iterator.hasNext()) { String key=iterator.next(); System.out.println("key:"+key+" value: "+map.get(key)); }*/ /* 是否包含指定的键 System.out.println(map.containsKey("02")); 是否包含指定的值 System.out.println(map.containsValue("张三")); 通过key获取value。可以通过get来判断值是否存在 System.out.println(map.get("03")); 获取集合的长度 System.out.println(map.size()); 获取集合的所有值 System.out.println(map.values()); 通过key删除元素 注意:删除后返回删除成功后的值 System.out.println("remove:"+map.remove("03"));//返回王五 清除集合中的所有元素 map.clear(); System.out.println(map.values()); map.putAll(map2); System.out.println(map.values()); } }