10.ArrayList,LinkedList集合

博客介绍了ArrayList中add方法的复制操作,指出创建数组时最好定义初始化容量,否则首次调用add方法会消耗大量CPU。还对比了ArrayList和LinkedList的区别,ArrayList底层是数组,查找快、增删慢;LinkedList底层是链表,查找慢、增删快。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ArrayList中add方法的复制操作

 

1.如图,先新建了一个list数组,长度为0

2.调用add方法后,通过arrays工具类中的copy方法把这个list数组的长度增加为10

 

结论:在创建数组时最好定义一个初始化数组容量。因为在第一次调用add方法时会进行一堆方法的执行,甚至还调用了System.ArrayCopy这个JNI来执行数组的复制,会消耗大量的cpu。

 

 

Arraylist和Linkedlist的区别

 

Arraylist的底层用数组实现,它的初始值为10增长因子为0.5。因为arraylist是由顺序表实现的,所以在进行增删改操作时要挪位置,删除的时候如果是最后一位不用挪位置,如果不是把其他的位置往前移。(查找的时间复杂度的为O(1),增删改的时间复杂度为O(n))

 


Linkedlist底层用链表来实现,链表根据指针逐一循环查找,所以查找效率低;当它删除时,只需要把链断开,再连接上,所以删除效率高。(查找的时间复杂度的为O(n),增删改的时间复杂度为O(1))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值