java数组末尾插入,关于java:哪个更快 – 在数组末尾或链表中插入元素

哪个更快 - 在数组或链表的末尾插入一个元素?

数组是指ArrayList还是实际数组? 因为添加到数组中的任何点都是相同的速度,但它不能更长

关键的事情:微妙的细节很重要。 所以可能想要更新您的问题,以确保精确。 你想看看:stackoverflow.com/questions/559839/…

可能是Java ArrayList与LinkedList上的Performance的重复,仅与Creation / Insertion和排序有关,Java ArrayList和LinkedList - 在结束实现细节时添加元素,何时使用LinkedList over ArrayList?,ArrayList vs LinkedList Java,java linkedlist比arraylist慢 什么时候添加元素?

当你说"数组"时我假设你的意思是ArrayList,因为在Java中你不能"添加"到一个完整的数组。

首先,如果你"插入到最后",你实际上是在追尾,而不是"插入"。这种区别很重要,因为在任意位置插入ArrayList是O(n)操作,因为右边的所有元素必须沿着一个位置"移位",以便为插入的元素腾出空间。

添加到LinkedList的(尾部)始终是O(1)(恒定时间)操作。

添加到ArrayList通常是O(1)操作,但如果后备阵列已满,则可能是O(n)操作,因为必须分配新数组并复制每个元素。在数组未满的一般情况下,ArrayList的性能(稍微)比LinkedList快,但差异非常小。

两者的摊销成本是相同的,但如果每次都需要恒定时间,则只有LinkedList才能这样做。

要回答所问的问题,如果索引>=数组长度或<0,则添加到数组的"结尾"将导致IndexOutOfBoundsException,否则为O(1)。

"当你说"数组"时,我认为你的意思是ArrayList,因为在Java中你不能"添加"到一个完整的数组。" 谁说它已经满了?

将元素附加到Array的末尾会比添加到LinkedList更快,因为添加到LinkedList始终意味着在列表末尾创建单元格,然后向其添加值。在Array中,您只需向现有单元格添加值。但是,在Array中,如果它已经已满并且没有空格,则在LinkedList中将获得IndexOutOfBoundsException,您将永远不会遇到此问题,因为List将始终根据您的需要增长。此外,LinkedList和ArrayList之间存在明显差异,ArrayList存在随机访问,这意味着对任何元素的访问始终为O(1),而在LinkedList中,它始终是顺序访问,这意味着访问时间将根据索引而不同,在最坏的情况下,情况是O(n)。但是,附加到LinkedList总是O(1)但在ArrayList中不是这样。如果没有填充ArrayList,它将是O(1)但如果它已满,它将首先增加多个单元格并且仅十,它会添加值,所以最坏的情况是O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值