首页 > 编程知识 正文

linkedlist和arraylist,输出arraylist集合中元素

时间:2023-05-06 13:09:29 阅读:131402 作者:209

看了这个问题大家觉得很简单,对吧?

ArrayList查询快! 链接列表删除得很快! 很简单的问题,对吧?

这样回答当然是对的,但还不够!

有些人可能会说,ArrayList的底部是数组,所以查询速度很快;而LinkedList的底部是链表,所以添加和删除速度很快。

这样回答,当然比第一个好,但还不够!

那么怎么回答才是全面的呢? 直接上面的照片!

数组

链表

那么为什么数组查询会很快? 假设数组包含一组对象,每个对象都有内存大小。 例如,对象具有一个int类型占用4个字节的字段,而数组位于堆中的内存数组将只考虑实际数据占用的内存,确定为40字节。 如果要查找第九个对象,则[9-1] *4=32,33到36字节是要查找的对象。 链表得不到这样的效率。 如上图所示,要找到A4,必须首先找到A3,然后找到A2,然后找到A1。 这样的搜索效率会大大降低。

那么,在说要找的基础上,即使说插入,插入数组也是相当浪费效率的。 要插入到数组中的某个位置,必须首先复制插入位置之前,然后在新数组之后添加新元素,最后在旧数组的后半部分插入添加的新数组之后。 插入链表变得相当简单。 例如,要在A3和A4中插入b,只需将A3指针与A4对齐。

那么说,为什么不做实际的事呢? 那么测量一下吧!

ArrayList和LinkedList插入操作测试

测试代码:

测试结果:重复执行几次,时间差约为2ms

ArrayList和LinkedList查询操作测试

测试结果显示:不稳定,但多次测量大致在2ms左右

如果总结一下:这一数据量,所有的效果都不明显。 (ArrayList的下级数组好像有扩展效率的问题哦。 感兴趣的伙伴请调查一下。 很有用。 )就是说,在面试中,大家都在回答不同链表的特征。 有时候面试官会刁难你,刨根问底。 这个答案可以作为参考! 如果考试有什么错误的地方,希望你指出来。 互相学习哦~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。