【Java基础】Arraylist&LinkedList机制,failfast&failsafe

本文根据黑马程序员视频编写,为本人学习笔记,转载注明出处
黑马程序员视频地址https://www.bilibili.com/video/BV15b4y117RJ?

1 arraylist扩容机制

arrylist 是顺序线性表。而linkedlist则是链式线性表(每一个节点占两个内存,内存更大 因此我们在实际使用时一般是用arraylist。
jdk8版本之后:
通过无参构造

new arraylist();

这样构造出来的是占用内存大小是0

扩容规则

初始为0加入元素则变成10,之后变为1.5倍进行扩容。
小数向下取整
1.5的底层用的是 右移一位的思想(相当于除于2)再加上原来的数。
addAll方法扩容则是选择一步到位。

2 failfast&failsafe(迭代器运行机制

这两者是针对多线程情况下的迭代器运行机制
下图是他们的性质
在这里插入图片描述

1.arraylist是failfast,不允许他人修改

在这里插入图片描述
可以看到报了一个并发修改异常

2.copyonwriteArraylist则是failsafe允许修改

failsafe仍旧会使用原来的线性表

3 两者比较

见下图
在这里插入图片描述
从局部性原理来理解arraylist的优势

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值