ArrayList随机访问,动态扩容

ArrayList作为动态数组,支持高效的随机访问,因为其元素在内存中连续存放。在遍历时,普通for循环优于增强for循环和迭代器。ArrayList会动态扩容,如初始未指定大小,会默认分配10个空间,每次达到容量极限时通过1.5倍扩容。扩容过程涉及Arrays.copyOf(),可能导致空间浪费,但保证了随机访问效率,而插入和删除操作效率较低。
摘要由CSDN通过智能技术生成

随机访问:

ArrayList是一个动态数组,实现了RandomAccess接口,支持随机访问,通过get(i)即可获得相应内存中存放的值。原因是因为ArrayList存放的内容在内存中是连续的,数组直接用[ ]访问,相当于直接操作内存地址,所以随机访问的效率较高。

普通的for循环是随机访问的,所以遍历ArrayList使用普通for循环比增强for循环和迭代器的效率高。

而LinkedList是一个双向链表,链表只能顺序访问,LinkedList中的get方法是按照顺序从列表的一端开始检查,直到找到要找的地址。所以遍历LinkedList使用增强for循环和迭代器的效率高,使用普通for循环会每次都从头开始遍历,效率较差。

动态扩容:

ArrayList是动态扩容的,创建ArrayList时,ArrayList有三个构造函数:

public ArrayList();

默认的构造器,将会以默认的大小来初始化内部的数组 。

public ArrayList(Collection<? extends E> c)

用一个ICollection对象来构造,并将该集合的元素添加到ArrayList。

public ArrayList(int ini
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值