【Java基础】详解Java中Map集合类 HashMap、Hashtable、LinkedHashMap、TreeMap(不涉及底层实现)

学习Java中Map集合类时,强烈建议和Java中set一起

一、Map的基本介绍及其实现类

Java.util.Map,实现了四个类,分别是HashMap、Hashtable、LinkedHashMap、TreeMap。
Map主要用于存储键值对,根据键得到值,因此键不允许重复,但值可以重复

一、HashMap的特点介绍

1、HashMap是最常用的map,它根据键的hashcode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时, 获取数据的顺序是完全随机的。
2、HashMap最多只允许一条记录的键为null,允许多条记录的值为null。
3、HashMap不支持线程同步,即某一时刻,可以有多个线程同时向HashMap中写入数据,这样可能会导致数据不一致。
4、如果需要同步,可以使用collections的synchronizedMap方法使HashMap具有同步的功能,或者使用concurrentHashMap

一、Hashtable的特点介绍

1、Hashtable与HashMap类似,它继承自Dictionary类,不同的是,它不允许记录的键或者值为空(一个也不行)
2、Hashtable支持线程同步,即任意时刻只有一个线程能向Hashtable中写入数据,因此Hashtable写入时比较慢

一、LinkedHashMap的特点介绍

1、LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,再用Iterator遍历LinkedHashMap时,先得到的数据一定是先插入的。
2、可以在构造的时候带上参数,按照应用的次数排序,在遍历的时候会比HashMap慢,存在特殊情况,当HashMap容量很大,实际数据比较少的时候,遍历可能比LinkedHashMap慢,因为LinkedHashMap遍历的速度只和实际数据有关和容量无关。

一、TreeMap的特点介绍

1、TreeMap实现了sortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序进行排序
2、可以指定排序的比较量,当用Iterator遍历TreeMap时,得到的记录是排过序的
3、建议看一下TreeMap底层实现的数据结构红黑树

总结:

1、一般情况下,我们用的最多的是HashMap,在Map中插入、删除、和查找数据的时候,HashMap是最好的选择。
2、如果想要按照自然顺序或者自定义的顺序遍历键,那么TreeMap会更好
3、如果需要输出顺序和输入的相同,那么用LinkedHashMap可以实现,它可以按照顺序排列

了解不同的数据结构的使用场景,在不同的场景中选择最好的数据结构。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值