java集合框架

集合类图

在这里插入图片描述

List集合:

特点:元素有序,且可重复

遍历:下标,foreach,迭代器

扩容:

初始容量10,负载因子0.5,扩容增量0.5倍
新容量 = 原容量 + 原容量 * 0.5 , 如 ArrayList的容量为10,一次扩容后是容量为15

实现:

ArrayList

简单数据结构,超出容量自动扩容,动态数组
​ 内部实现是基于基础的对象数组的
​ 随机访问快
​ 不适合随机增加或删除
线程不安全

LinkedList

LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部
​ 线程不安全
​ LinkedList可被用作堆栈(stack)【包括了push,pop方法】,队列(queue)	或双向队列(deque)
​ 以双向链表实现,链表无容量限制,允许元素为null,线程不安全
​ 适合做随机的增加或删除

Vector

 线程安全
但行性能慢,不建议使用

CopyOnWriteArrayList

​ 写时复制
线程安全
​ 适合于读多,写少的场景
​ 写时复制出一个新的数组,完成插入、修改或者移除操作后将新数	组赋值给array
​ 比Vector性能高
​ 最终一致性
​ 实现了List接口,使用方式与ArrayList类似

ArrayList remove 的注意点

列举:
​ 数据准备:为方便演示,需要有紧挨在一起的两个或多个相同的元素

 List<Integer> list=new ArrayList<Integer>();
  list.add(1);
  list.add(2);
  list.add(3);
  list.add(3);
  list.add(4);

for(int i=0;i<list.size();i++){
   if(list.get(i)==3) list.remove(i);//当他删除之后 我们的另一个三就会挤上去  所以输出的是                                              [1,2,3,4]
}

Set

特点:
无序,不重复

遍历:foreach

foreach,迭代器
扩容:

初始容量16,负载因子0.75,扩容增量1倍

实现:​ HashSet

​ 它存储唯一元素并允许空值

​ 依据对象的hashcode来确定该元素是否存在

​ 由HashMap支持

不保持插入顺序

​ 非线程安全

​ 性能参数:初始容量,负载因子

​ 默认值: 初始容量16,负载因子0.75

​ 示例:new HashSet<>(20, 0.5f);

TreeSet

​ 是一个包含有序的且没有重复元素的集合
​ 作用是提供有序的Set集合,自然排序或者根据提供的Comparator进行排序

​ TreeSet是基于TreeMap实现的

Map

特点:
​ 无序,键值对,键不能重复,值可以重复,
​ 键重复则覆盖,没有继承Collection接口
​ 扩容:初始容量16,负载因子0.75,扩容增量1倍

遍历:

​ 先获取所有键的Set集合,再遍历(通过键获取值)
​ 取出保存所有Entry的Set,再遍历此Set即可

实现:HashMap

​ 线程不安全,最常用,速度快
​ 内部采用数组来存放数据
​ 基本原理

Table数组中的的Node

链表结构示意图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值