我正在考虑使用最适合随机插入的Java集合。我会插入很多内容,并且只在最后一次阅读集合。Java随机插入集合
我希望的功能是在指定索引处添加一个元素,位于< 0,current_length>之间的任何位置。哪个收藏最有效?
我正在考虑使用最适合随机插入的Java集合。我会插入很多内容,并且只在最后一次阅读集合。Java随机插入集合
我希望的功能是在指定索引处添加一个元素,位于< 0,current_length>之间的任何位置。哪个收藏最有效?
有用的链接,供大家参考: http://www.coderfriendly.com/wp-content/uploads/2009/05/java_collections_v2.pdf
不完全知道你将如何读取信息后输入(以及如何重要的是它给你)。根据你想要做的事情,Hashmap或者ArrayList是有意义的。也不知道你是否正在寻找线程安全或不安全的东西。 希望它有帮助。
什么?随机插入到ArrayList中? – unbeli
@unbeli - 我可能误解了这个问题,但我认为你也不清楚它的理解。 –
使用List
的效率低下是该问题的特点。你添加的东西每一次,以后每元素将不得不重新索引 - 为javadoc状态:
班次目前该位置的元素(如果有的话)和任何 后续元素向右移动(增加了一个到他们的指数)。
从您的问题/评论,它会显示你有一堆Object
s,并且你正在对它们进行排序。我建议对这个问题更有效的解决方案是编写Comparator
(或使您的对象实现Comparable
),然后使用Collections.sort(list, comparator)
(或Collections.sort(list)
)。
您可能会建议您的Object
正在基于其他变量进行排序。在这种情况下,您可以创建Object
的扩展,将其他变量作为字段并扩展为Comparable
,并使用getOriginal()
等方法。将这些包装好的对象添加到列表中,进行排序,然后遍历列表,将原始对象(从getOriginal()
)添加到新列表。
对于集合的排序算法上的信息 - 看到这个SO question
列表是一个界面,它不能低效。插入LinkedList是O(1),但你需要首先找到。 SkipList可能会有所帮助,但它不在JRE中。 – unbeli
什么语言是您使用? – beerbajay
这些指数是否为连续范围? –
Java。该集合将增长,并且索引将在范围0长度 – Bober02