Java8增强的Map集合

Map集合简介

  Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组用于保存Map里的vlaue,key和value都可以是任何引用类型的数据。

Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。

  key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、确定的value。从Map中取出数据时,只要给出指定的key,就可以取出对应的value。

  如果把Map里的所有key放在一起来看,它们就组成了一个set集合(所有的key没有顺序,key与key之间不能重复),实际上Map确实包含了一个keySet()方法,用于返回Map里

所有key组成的Set集合。

  Map里key集合Set集合里元素的存储形式也很像,Map子类和Set子类在名字上也惊人地相似,比如Set接口下有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet等子接口和实现类,而Map接口下则有HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap等子接口和实现类。

  Set和Map之间的关系非常密切。虽然Map中放的元素是key-value对,Set集合中放的元素是单个对象,但如果把key-value对中的value当成key的附庸:key在哪里,value就跟在哪里。这样就可以像对待Set一样来对待Map了。事实上,Map提供了一个Entry内部类来封装key-value对,而计算Entry存储时则只考虑Entry封装的key。从Java源码来看,Java是先实现了Map,然后通过包装一个所有value都为null的Map就实现了Set集合。

  如果把Map里的所有value放在一起来看,它们又非常类似于一个List:元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中的索引不再使用整数值,而是以另一个

对象作为索引。如果需要从List集合中取出元素,则需要提供该元素的数字索引;如果需要从Map中取出元素,则需要提供该元素的key索引。因此,Map有时也被称为字典,或关联数组。Map接口中定义了如下常用的方法。

  void clear():删除该Map对象中的所有key-value对。

  boolean containsKey(Object key):查询Map中是否包含指定的key,如果包含则返回true。

  boolean containsValue(Object value):查询Map中是否包含一个或者多个value,如果包含则返回true。

  Set entrySet():返回Map中包含的key-value对所组成的Set集合,每个集合元素都是Map.Entry(Entry是Map的内部类)对象。

  Object get(Object key):返回指定key所对应的value;如果此Map中不包含该key,则返回null。

  Boolean isEmpty():查询该Map是否为空(即不包含任何key-value对),如果为空则返回true。

  Set keySet():返回该Map中所有key组成的Set集合。

  Object put(Object key,Object value):添加一个key-value对,如果当前Map中已有一个与该key相等的key-value对,则新的key-value对会覆盖原来的key-value对。

  void putAll(Map m):将指定Map中的key-value对复制本Map中。

  Object remove(Object key):删除指定key所对应的key-value对,返回被删除key所关联的value,如果该key不存在,则返回null。

  boolean remove(Object key,Object value):这是Java8新增的方法,删除指定key、value所对应的key-value对。如果从该Map中成功地删除该key-value对,该方法返回true,否则返回false。

  int size():返回该Map里的key-value对的个数。

  Collection values():返回该Map里所有value组成的Collection。

  Map接口提供了大量的实现类,典型实现如HashMap和Hashtable等、HashMap的子类LinkedHashMap,还有SortedMap子接口及该接口的实现类TreeMap,以及WeakHashMap、IdentiHashMap等。下面将详细介绍Map接口实现类。

  Map中包括一个内部类Entry,该类封装了一个key-value对。Entry包含如下三个方法。

  Object getKey():返回该Entry里包含的key值。

  Object getValue():返回该Entry里包含的value值。

  Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。

  Map集合最典型的用法就是成对添加、删除key-value对,接下来即可判断该Map中是否包含指定key,是否包含指定value,也可以通过Map提供的keySet()方法

获取所有key组成的集合,进而遍历Map中所有的key-value对。

猜你喜欢

转载自www.cnblogs.com/wang9911-00/p/10659453.html