容器--Map概述

之前讲过了Collection类下的两个主要容器:List和Set,今天我们来讲讲没有继承自Collection的容器:Map。

Map提供了一个更通用的元素存储方法,Map提供了一个键值对的存储方式,一个键映射到一个值。、

Map中的常用方法

返回类型方法名(参数类型)
voidclear()

从该地图中删除所有的映射(可选操作)。

booleancontainsKey(Object key)

如果此映射包含指定键的映射,则返回 true 。

Set<Map.Entry<K,V>>entrySet()

返回此地图中包含的映射的Set视图。

booleanequals(Object o)

将指定的对象与此映射进行比较以获得相等性

inthashCode()

返回此地图的哈希码值。

booleanisEmpty()

如果此地图不包含键值映射,则返回 true 。

Set<K>keySet()

返回此地图中包含的键的Set视图。

Vput(K key, V value)

将指定的值与该映射中的指定键相关联(可选操作)。

voidputAll(Map<? extends K,? extends V> m)

将指定地图的所有映射复制到此映射(可选操作)。

Vremove(Object key)

如果存在(从可选的操作),从该地图中删除一个键的映射。

intsize()

返回此地图中键值映射的数量。

default Vreplace(K key, V value)

只有当目标映射到某个值时,才能替换指定键的条目。

default booleanreplace(K key, V oldValue, V newValue)

仅当当前映射到指定的值时,才能替换指定键的条目。

Map中的常用类

我们来看看Map的结构图

可以看出主要有三个实现类

  1. HashMap
  2. TreeMap
  3. WeakHashMap
  4. HashTable

HashMap

HashMap是最常用的Map,根据键的Hash值来存储数据,具有很快的访问速度。HashMap允许key、value为null,HashMap是非同步的。

TreeMap

TreeMap的特点就是其值是有序的,默认按升序排序,也可以指定比较器。TreeMap不允许key为null。TreeMap是非同步的。

WeakHashMap

WeakHashMap与HashMap基本一样,区别在于其键的引用类型。WeakHashMap的键是弱引用(WeakReference)类型,采用弱引用类型的好处是方便GC(垃圾回收器)进行垃圾回收,即方便内存的释放。

HashTable

与HashMap类似,但是HashTable不允许key和value的值为null,HashTable是线程同步的。

ConcurrentHashMap

在这里要特别提一下ConcurrentHashMap。HashMap是非同步的,虽然HashTable能解决HashMap的非同步问题,但是HashTable采用的是使用synchronized关键字进行线程同步,这样做的效率很低。ConcurrentHashMap就是为了解决线程同步但效率不高的问题。ConcurrentHashMap采用了分段锁的机制,后续我们会对这个分段锁详细介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值