list、set、map的特点以及差异

java集合介绍

集合的概念

集合是一个容器,是一个载体,可以一次容纳多个对象。

集合的分类

在java中集合分为两大类:单个方式存储元素:java.util.Collection,键值对的方式存储元素:java.util.Map。
1、collection下有List、Set、queue三大接口。List代表有序的可重复的数据列表,Set代表无序的不可重复的数据集合,Queque代表的是先进先出的数据队列。
(1)List分为ArrayList、LinkedList、Vector。
(2)Set分为HashSet、SortedSet、TreeSet。
2、Map分为HashMap、HashTable、TreeMap。Map无序,主键key唯一,value值不唯一。
在这里插入图片描述

List 集合存储元素特点:

有序可重复
有序:存进去的顺序和取出来的顺序相同,每一个元素都有下标
可重复:存进去1,可以再存储一个1
动态大小:List的大小可以根据需要动态调整,可以添加或删除元素。
ArrayList

LinkedList

Set 集合存储元素的特点:

无序不可重复

无序:存进去的顺序和取出来的顺序不一定相同,Set集合中每一个元素都没有下标。
不可重复:存进去1,就不能再存储1了。

Map 集合存储元素的特点:

无序不可重复
键值对:Map中的元素以键值对的形式存储,每个键唯一对应一个值。
无序性:Map中的元素没有固定的顺序,不同实现类可能以不同的顺序进行迭代。
快速查找:通过键可以快速查找对应的值,而不需要遍历整个集合。

Map集合的key,就是一个Set集合:
往Set集合中存放数据,实际上存放到了Map集合的key部分了。

SortedSet(SortedMap)集合存储元素的特点:

无序不可重复
无序:存进去的顺序和取出来的顺序不一定相同,Set集合中每一个元素都没有下标。
不可重复:存进去1,就不能再存储1了。
可排序:可以按照大小排序。

HashMap是动态数组加链表加红黑树,初始长度16 对key取hashcode值与长度取余,余数是几就进入哪,有相同的以链表挂上,链表长度大于 8变成红黑树,小于6变回链表,如果有相同的hash值,后来的会覆盖之前的

3、HashMap、Hashtable以及ConcurrentHashMap的区别?
  (1)HashMap是线程不安全的,因为HashMap中操作都没有加锁,因此在多线程环境下会导致数据覆盖之类的问题,所以,在多线程中使用HashMap是会抛出异常的。
  (2)HashTable是线程安全的,但是HashTable只是单纯的在put()方法上加上synchronized。保证插入时阻塞其他线程的插入操作。虽然安全,但因为设计简单,所以性能低下。
  (3)ConcurrentHashMap是线程安全的,ConcurrentHashMap并非锁住整个方法,而是通过原子操作和局部加锁的方法保证了多线程的线程安全,且尽可能减少了性能损耗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java知识技术分享

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值