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

原文地址:https://www.cnblogs.com/wang9911-00/p/10659453.html

时间: 2024-12-25 20:32:24

Java8增强的Map集合的相关文章

java8新特性:对map集合排序

一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map.map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,HashMap是无序的,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度.HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为

Java8 新特性之集合操作Stream

Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同. stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作,或者大批量数据操作. 为什么要使用Stream 函数式编程带来的好处尤为明显.这种代码更多地表达了业务逻辑的意图,而不是它的实现机制.易读的代码也易于维护.更可靠.更不容易出错. 高端 使用实例: 测试数据:

Map集合概述和特点

A:Map集合概述和特点(Set底层依赖的是Map) 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口) Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构值针对键有效,跟值无关;如:TreeMap:键是用二叉树算法,HashMap:键是hash算法, Collection集合的数据结构是针对元素有效 图解:

List,Set,Map集合的遍历方法

List的三种实现:ArrayList(数组)  LinkedList(链表)  Vector(线程安全) List集合遍历方法: List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); /* * list遍历有三种方法:普通for 迭代器 增强for * */ //使用普通for遍历 f

集合框架(一) ----------Map集合遍历的方法

import java.util.*; /** * Map集合遍历的方法 * @author Administrator * */public class Test2 { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); /*Java 提供两种不同的类型: * 引用类型和原始类型(或内置类型). * Int是java的原始数据类型, * Inte

Collections工具类、Map集合、HashMap、Hashtable(十八)

1.Map集合概述和特点 * A:Map接口概述 * 去重复, * 查看API可以知道, * 将键映射到值的对象, * 一个映射不能包含重复的键, * 每个键最多只能映射到一个值.* B:Map接口和Collection接口的不同 * Map是双列的,Collection是单列的. * Map的键唯一,Collection的子体系Set是唯一的,即不重复. * Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效. 2.Map集合的功能概述 * a:添加功

I学霸官方免费教程三十三:Java集合框架之Map集合

Map接口 Map集合采用键值对(key-value)的方式存储数据,其中键不可以重复.值可以重复. 常用类有HashMap.TreeMap和Properties HashMap类 假如,现在我有一个集合,集合中存储着一批WiFi的名称和密码,现在要求通过名称快速找到密码.这样的需求使用List集合实现起来非常困难,Java为我们提供了另一种形式的集合,可以很好的解决这样的问题.就是Map集合. 实例: package map.hashMap; import java.util.HashMap;

遍历Map集合的几种方法

遍历Map集合的几种方法 方法1:使用迭代器iterator遍历集合 HashMap<Integer, Long> map = new HashMap<Integer, Long>(); for (int i = 1; i <= 50; i++) { map.put(i, Math.round(3.14*i*i)); } // map转换为set集合 Set<Entry<Integer, Long>> set = map.entrySet(); //

java学习笔记—集合之Map集合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p4 { margin: 0.0px 0.0px 0.0px 0.0