在Java中的给定索引处有效地在ArrayList中添加元素 [英] Add element in an ArrayList efficiently at a given index in java

查看:302
本文介绍了在Java中的给定索引处有效地在ArrayList中添加元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在索引i的ArrayList中插入Person类型的元素(我自己定义的类)

I need to insert a element of type Person (my own defined class) in an ArrayList at index i

我知道我可以使用 add(int index, E element) .

I know I can use add(int index, E element).

但是有什么有效的方法可以做到这一点,因为在我的列表中,平均大约需要1.5毫秒(经过1000次插入然后平均后收集的数据).

But is there any efficient method to do this as in my list it is taking around 1.5 ms on an average (data collected over 1000 insertion and then average).

推荐答案

如果您的任务需要更多的插入/删除操作,则可以始终使用

If your task is more insertion / deletion intensive, you can always use java.util.LinkedList.

  • ArrayList的大小有限.每次添加元素时,Java都会确保它可以适合-这样它就会增大ArrayList.如果ArrayList增长得更快,将会进行很多阵列复制.
  • LinkedList仅将元素添加到正确的位置(链接周围的节点),而无需增长和复制整个ArrayList.
  • 搜索元素时是LinkedList的缺点.由于没有索引,因此必须从列表的开头到结尾遍历才能找到项目.

对于LinkedList:

  • 得到的是O(n)
  • 加为O(1)
  • 删除为O(n)
  • Iterator.remove为O(1)

对于ArrayList:

  • 得到的是O(1)
  • add被O(1)摊销,但是O(n)最坏的情况,因为必须调整数组的大小并复制
  • 删除为O(n)

这篇关于在Java中的给定索引处有效地在ArrayList中添加元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆