Java随机插入集合

Java随机插入集合,java,collections,insertion,Java,Collections,Insertion,我正在考虑使用一个Java集合,它最适合于随机插入。我会插入很多,最后只看一次 我想要的功能是在指定的索引处添加一个元素,在两个索引之间的任意位置。使用哪一个收藏最有效?供您参考的有用链接: 不完全确定您将如何阅读输入后的信息(以及它对您的重要性)。Hashmap或ArrayList的作用取决于您希望执行的操作。也不确定您是否正在寻找线程安全的东西。 希望能有所帮助。使用列表的低效率是这个问题的特有问题。每次添加内容时,每个后续元素都必须重新编制索引,如下所示: 移动当前处于该位置的元素(如果

我正在考虑使用一个Java集合,它最适合于随机插入。我会插入很多,最后只看一次


我想要的功能是在指定的索引处添加一个元素,在两个索引之间的任意位置。使用哪一个收藏最有效?

供您参考的有用链接:

不完全确定您将如何阅读输入后的信息(以及它对您的重要性)。Hashmap或ArrayList的作用取决于您希望执行的操作。也不确定您是否正在寻找线程安全的东西。
希望能有所帮助。

使用
列表的低效率是这个问题的特有问题。每次添加内容时,每个后续元素都必须重新编制索引,如下所示:

移动当前处于该位置的元素(如果有)和 右侧的后续元素(将一个元素添加到其索引中)

从您的问题/评论来看,您似乎有一堆
对象
s,您正在对它们进行排序。我建议更有效地解决这个问题的方法是编写一个
比较器
(或者让您的对象实现
可比
),然后使用
集合.sort(list,Comparator)
(或者
集合.sort(list)

您可能会建议根据其他变量对
对象进行排序。在这种情况下,您可以创建
对象的扩展
,将这些其他变量作为字段并扩展
Comparable
,并使用类似
getOriginal()
的方法。将这些包装好的对象添加到列表中,排序,然后遍历列表,将原始对象(从
getOriginal()
)添加到新列表中


有关集合排序算法的信息,请参见此

索引是否为连续范围?Java。集合将增长,索引将在0范围内-length@Bober02长度是多少?好的,我修改了这个问题。我想使用一些集合,比如ArrayList,它公开了add(Eleem,index)方法,这在插入时是最有效的。谢谢你的用例是什么?是否可以更改算法以避免随机插入,例如按顺序插入,然后洗牌一次?什么??随机插入ArrayList?@unbeli-我可能误解了这个问题,但我认为您也不清楚。List是一个接口,它不可能是低效的。插入LinkedList是O(1),但需要先查找。SkipList可能会有所帮助,但它不在JRE中。