1000K数据在Java中用哪种选型进行存储?

如题,笔者在面试时被考察到该问题,Java中面临这样大的数组,选择ArrayLIst还是LinkedList来进行存储呢? 给出你的依据。


结论:大多数场景下直接使用ArrayList和ArrayDeque即可。


ArrayList和LinkedList均是实现了List接口的类。而LinkedList底层是双向链表,而ArrayList可以动态扩容缩容。

在 ArrayList 中访问一个元素需要常数时间 [O(1)],添加一个元素需要 O(n) 时间 [最坏情况]。在 LinkedList 中,插入一个元素需要 O(n) 时间,访问也需要 O(n) 时间,但是 LinkedList 比 ArrayList 使用更多的内存。

算法ArrayListLinkedList
查找头部O(1)O(1)
查找尾部O(1)O(1)
按idx查找O(1)O(n)
从头部插入O(n)O(1)
从尾部插入O(1)O(1)
从元素后插入O(n)O(1)

根据参考回答提供的图片,我们可以看出用LinkedList以及ArrayList存储数据时在x32与x64设备上占用空间的情况。(以N个空引用为例)
引用回答
如上图所示,当元素数量非常多的时候,尽量选用ArrayList。


参考资料:

When to use LinkedList over ArrayList in Java?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值