java中的集合(三)Map

本文介绍了Map接口及其在Java集合框架中的作用,Map用于存储键值对,提供快速查找功能。当需要根据特定键获取值时,Map比List更合适。Map的特点包括k-v存储结构和不允许null键。关于线程安全,hashtable通过全方法同步实现,但牺牲了性能;而ConcurrentHashMap利用CAS和ReentrantLock实现高效线程安全。
摘要由CSDN通过智能技术生成

1、什么是Map?

Map是继承于collection的一种集合。Map是用于存储多个Key-Value的集合。

2、为什么会出现Map?

由于我们在存储数据时,有时候会有一些,我通过某个值能需要都能拿到对应的数据的需求。比如我知道一个学生的名字,我是刚来的老师,我想通过名字就能对应上这个学生的所有信息。那么我采用什么形式来存储这个班级的学生信息比较好呢,用list的话,那么每次都需要取出学生对象拿到学生对象的名字对比,比较麻烦,这种是比较适合map的结构了,key是学生姓名,value存储学生对象。

3、Map的特点

a、存储结构为k-v型。

b、key不能为null。

4、线程安全问题

对于一个集合类来说,他的添加方法都会有多线程异常的隐患存在,那么对于map来说,有什么子类是线程安全的么?

List中的线程安全的类有很多,比较重要的是hashtableConcurrentHashMap,以及线程安全包装类。

5、hashtable实现线程安全的原理

hashtable是线程安全的map,是源于他的所有方法都是被sync锁住的,因此都是同步的方法,因此是线程安全,不过也正因为如此他的性能也比较低。

6、ConcurrentHashMap 实现线程安全的原理

ConcurrentHashMap是基于CAS 实现的reentrantlock来实现的,这是一种乐观锁的实现方式,在后续的多线程中会详细描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值