java集合系列——Map介绍(七)

Map是将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

大家好,又见面了,我是全栈君。

一.Map概述
0.前言
首先介绍Map集合,因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。
1:介绍

Map是将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

2:类图关系

这里写图片描述

3:讲解

(1):AbstractMap是一个抽象类, 继承Map,实现了Map的大部分API,它的作用Map的实现类继承它,可以减少重复编码!
(2):SortedMap是一个接口 继承Map,自己也封装一下方法,SortedMap中的内容是排序的键值对,排序的方法是通过比较器(Comparator)。SortedMap的排序方式有两种:自然排序 或者 用户指定比较器。
(3):ConcurrentMap是一个接口,并且继承Map接口,在java.util.concurrent包下!
(4):HashMap 继承于AbstractMap,HashMap的内容是“键值对,但不保证次序”!
(5): TreeMap 继承于AbstractMap,且实现了NavigableMap接口;因此,TreeMap中的内容是键值对,有序的键值对

(6):ConcurrentHashMap继承AbstractMap实现ConcurrentMap,是一个并发的哈希表!此类与 Hashtable 相似,但与 HashMap 不同,它不 允许将 null 用作键或值。线程安全,但是实现方法和Hashtable完全不同(并发情况可以使用) 。

(7):Dictionary是一个抽象类(数据字典),HashTable继承Dictionary并实现Map接口,也是键值对,但不保证次序!Hashtable是线程安全的,而且它支持通过Enumeration去遍历。(现在使用很少,并发操作效率太低)

二.Map的API

 void clear() 
          从此映射中移除所有映射关系(可选操作)。 
 boolean containsKey(Object key) 
          如果此映射包含指定键的映射关系,则返回 trueboolean containsValue(Object value) 
          如果此映射将一个或多个键映射到指定值,则返回 trueSet<Map.Entry<K,V>> entrySet() 
          返回此映射中包含的映射关系的 Set 视图。 
 boolean equals(Object o) 
          比较指定的对象与此映射是否相等。 
 V get(Object key) 
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 
 int hashCode() 
          返回此映射的哈希码值。 
 boolean isEmpty() 
          如果此映射未包含键-值映射关系,则返回 trueSet<K> keySet() 
          返回此映射中包含的键的 Set 视图。 
 V put(K key, V value) 
          将指定的值与此映射中的指定键关联(可选操作)。 
 void putAll(Map<? extends K,? extends V> m) 
          从指定映射中将所有映射关系复制到此映射中(可选操作)。 
 V remove(Object key) 
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 
 int size() 
          返回此映射中的键-值映射关系数。 
 Collection<V> values() 
          返回此映射中包含的值的 Collection 视图。 

其中:

   entrySet()用于返回键-值集的Set集合 keySet()用于返回键集的Set集合 values()用户返回值集的Collection集合

嵌套类:

 interface Entry<K,V> { 
   
    映射项(键-值对 )

三.后言
接下来的博文介绍Map的实现类。主要介绍HashMap和TreeMap!其他的有时间会在去研究!

附:Map类图(来源网络)

这里写图片描述

这里写图片描述

参考文章:http://www.cnblogs.com/skywang12345/p/3308931.html


java集合系列——java集合概述(一)
java集合系列——List集合之ArrayList介绍(二)
java集合系列——List集合之LinkedList介绍(三)
java集合系列——List集合之Vector介绍(四)
java集合系列——List集合之Stack介绍(五)
java集合系列——List集合总结(六)
java集合系列——Map介绍(七)
java集合系列——Map之HashMap介绍(八)
java集合系列——Map之TreeMap介绍(九)
java集合系列——Set之HashSet和TreeSet介绍(十)



如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页http://blog.csdn.net/u010648555

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/121182.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • HDU 5046 Airport(DLX反复覆盖)

    HDU 5046 Airport(DLX反复覆盖)

  • 通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库

    通过数据泵expdp、impdp方式备份与还原(导出与导入)Oracle数据库前言备份还原oracle数据库的方式有很多种,本文只讲解使用expdp、impdp数据泵方式备份与还原(恢复)数据库,此种方式可以导出/导入数据库表以及表中的数据。请自行修改目录路径,否则出现错误别怪我哦~一、备份step1:使用system登录oracle打开DOS命令行界面,使用system用户登录oracle,格式:sqlplus用户名/密码@实例名(或者使用plsql……

    2022年10月20日
  • Linux 镜像文件下载「建议收藏」

    Linux 镜像文件下载「建议收藏」CENTOS简介和镜像下载一、CENTOS下载各国镜像地址http://www.centos.org/modules/tinycontent/index.php?id=32二、中国大陆镜像部分ChinaCMCCTaianBranch(泰安移动)http://mirrors.ta139.com/centos/ChinaNetEase(163网

  • python dtype o_python – 什么是dtype(’O’)? – 堆栈内存溢出「建议收藏」

    python dtype o_python – 什么是dtype(’O’)? – 堆栈内存溢出「建议收藏」当你在数据帧中看到dtype(‘O’),这意味着Pandas字符串。什么是dtype?什么属于pandas或numpy,或两者,或其他什么?如果我们检查一下pandas代码:df=pd.DataFrame({‘float’:[1.0],’int’:[1],’datetime’:[pd.Timestamp(‘20180310′)],’string’:[‘foo’]})print…

  • clion永久激活码[免费获取]

    (clion永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

  • 软件测试工作基本流程[通俗易懂]

    软件测试工作基本流程[通俗易懂]最近在为面试新工作做准备,所以想想整理一下软件测试的基本工作流程,大致梳理一遍,这样也便于自己在面试过程中可以沉着的面对面试官的测试工作如何进行的问题。首先,作为测试人员需要学习并了解业务,分析需求点为什么测试人员要参加需求分析?也就是进行测试需求分析的目的是什么?第一、把用户需求转化为功能需求:1)对测试范围进度量2)对处理分支进行度量3)对需…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号