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

查看:44
本文介绍了在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).

推荐答案

如果您的任务是更多的插入/删除密集型任务,您可以随时使用 java.util.LinkedList.

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天全站免登陆