八、JavaSE-List接口

  1. Array和ArrayList的区别

实际再问,数组和ArrayList的区别

  • 存储类型不同

Array:只可存储基本数据类型和对象

ArrayList:只能存储对象

  • 大小不同

Array:被设置为固定大小

ArrayList:是一个可变数组,大小可自动调整

  • 对象所包含的方法不同

Array:所包含的方法没有ArrayList多

ArrayList有很多操作方法:addAll、removeAll、iteration等

  1. ArrayList和Vector的区别

这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置是有顺序的

  • 同步性:

Vector是线程安全的,也就是说是它的方法之间是线程同步的,而ArrayList是线程不安全的,它的方法之间是线程不同步的。如果只有一个线程会访问到集合,那最好是使用ArrayList,因为它不考虑线程安全,效率会高些;如果多个线程会访问到集合,那最好是用Vector,因为不需要我们自己再去考虑和编写线程安全的代码。

  • 数据增长:

ArrayList与Vector都有一个初始的容量大小,当存储进它们里面的元素的个数超过了容量时,就需要增加ArrayList与Vector的存储空间,每次要增加存储空间时,不是只增加一个存储单元,而是增加多个存储单元,每次增加的存储单元的个数在内存空间利用与程序效率之间要取得一定的平衡。

即Vector增长原来的一倍,ArrayList增加原来的0.5倍

  1. Arraylist 与 LinkedList 区别?

  • 是否保证线程安全:ArrayList和LinkedList都是不同步的,也就是不保证线程安全

  • 底层数据结构:ArrayList底层使用的是Object数组;LinkedList底层使用的是双向链表数据结构

  • 是否支持快速随机访问:LinkedList不支持高效的随机元素访问,而ArrayList支持。快速随机访问就是通过元素的序号快速获取元素对象(对应于get(int index)方法

  • 内存空间占用:ArrayList的空间浪费主要体现在List列表的结尾会预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗比ArrayList更多的空间(因为要存放直接后续和直接前驱以及数据)

  1. ArrayList的拓容机制

ArrayList每次扩容都为原先容量1.5倍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值