欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java8增强的Map集合

程序员文章站 2023-11-22 23:46:52
Map集合简介 Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另外一组用于保存Map里的vlaue,key和value都可以是任何引用类型的数据。 Map的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false ......

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