当前位置: 移动技术网 > IT编程>开发语言>Java > Java8增强的Map集合

Java8增强的Map集合

2019年04月06日  | 移动技术网IT编程  | 我要评论

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对。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网