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

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

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

(0)
上一篇 2022年2月26日 上午7:00
下一篇 2022年2月26日 上午7:00


相关推荐

  • Linux:objdump命令解析

    Linux:objdump命令解析objdumpobjdu 命令是 Linux 下的反汇编目标文件或者可执行文件的命令 它以一种可阅读的格式让你更多地了解二进制文件可能带有的附加信息 参数选项 archive headers a 显示档案库的成员信息 类似 ls l 将 lib a 的信息列出 bbfdnametarg bfdname 指定目标码格式 这不是必须的 objdump 能

    2026年3月26日
    1
  • java基础-云服务器购买

    java基础-云服务器购买小伙伴们,你们好呀!我是老寇!3年前,在阿里云买了我人生中的第一台云服务器,二话没说直接下单,看着支付宝的余额,我心如刀绞。所幸的是我熬过了这一个月。接下来我们进入正题(以阿里云为例)!目录一、操作步骤一、操作步骤1.输入阿里云网址,点击账号登录2.扫码登录->强烈建议下个阿里云APP,这样每次登陆只需要扫一扫就可以3.点击控制台,进入控制台4.完成实名认证(略)5.点击最新活动,找到开发者成长计划6.认准ECS服务器7.买Cento

    2022年5月5日
    43
  • 一张表读懂ON(安森美)

    一张表读懂ON(安森美)origin nbsp http bbs elecfans com jishu 532341 1 1 html 芯师爷语 安森美半导体 曾经的摩托罗拉弃儿 通过发奋自强 专注专精 在挺过了 2008 年差点倒闭的绝境之后 纵横捭阖 终成大器 这完全是一部半导体领域屌丝逆袭的励志电影 阿甘 安森美 正传 号外 ON 并购飞兆半导体节外生枝 来自中国的华润集团和清芯同创出价每股 21 7 美元并购飞兆

    2026年3月20日
    2
  • 程序员精选:TensorFlow和ML前5名的课程

    程序员精选:TensorFlow和ML前5名的课程

    2021年6月11日
    112
  • linuxnodejs安装及环境配置_nodejs不是内部外部命令

    linuxnodejs安装及环境配置_nodejs不是内部外部命令安装环境本机系统:Windows10Pro(64位)Node.js:14.17.5(64位)安装Node.js步骤《1》下载对应你系统的Node.js版本:https://nodejs.org/en/download/《2》选安装目录进行安装《3》环境配置《4》测试前期准备(1)进入官网下载地址下载Node.js(2)如果要下载指定版本既可选择下边链接开始安装(1)下载完成后,双击“node-v6.9.2-x64.msi”,开始安装Nod..

    2025年11月25日
    5
  • 深入了解按位异或(转载)

    深入了解按位异或(转载)深入理解按位异或运算符参与运算的两个值 如果两个相应的 bit 位相同 则结果为 0 否则为 1 0 0 0 1 0 1 0 1 1 1 1 0 按位异或的三个特点 下面将以具体的东西加深理解 1 0 异或任何数 任何数 2 1 异或任何数 任何数取反 3 任何数异或自己 把自己变成了 0 可以利用异或运算法则进行特定的位翻转 利用 1 2 1 比如把第 2 位

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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