集合

集合

一、集合框架图(图片来源于网络)
在这里插入图片描述在这里插入图片描述
这是两个集合框架接口的总体图分为两个集合接口,分别是Collection接口和map接口
二、collection集合接口
下面的接口主要有:List、Set、Queue;
(1)Queue接口与List、Set同一级别,都是继承了Collection接口。
(2)LinkedList既可以实现List接口也可以实现Queue接口。只不过LinkedList实现Queue接口时,Queue接口窄化了对LinkedList的访问权限(参数类型是Queue时只能访问Queue中的方法,不能访问LinkedList的非Queue的方法)。
(3)SortedSet是个接口,它里面(只有TreeSet这一实现可用)的元素一定是有序的。
1、List
(1)ArrayList
优点:底层数据结构是数组,查询快;效率高
缺点:增删慢;线程不安全

为什么是线程不安全的?
ArrayList的底层源码显示其主要做了两个步骤

    ensureCapacityInternal(size + 1);  // Increments modCount!!
    elementData[size++] = e;

a.判断elementData数组容量是否满足需求
b.在elementData对应位置上设置值
具体情况参考博客https://blog.csdn.net/u012859681/article/details/78206494
(2)Vector
优点:底层数据结构是数组,查询快;线程安全
缺点:增删慢;效率低

为什么是线程安全的?
由底层中的构造方法及其增删改查的操作发现会有synchronized关键字,会为Vector提供安全机制,保证了线程安全。
(3)LinkedList
优点:底层数据结构是链表,增删快;效率高
缺点:查询慢;线程不安全
原理参考博客:https://baijiahao.baidu.com/s?id=1598633392064956200&wfr=spider&for=pc
线程安全问题待定。。。。。。
2、Set
(1)HashSet
底层数据结构是哈希表(无序,唯一)
保证元素唯一性两个方法:hashCode()和equals()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值