我正在考虑使用最适合随机插入的Java集合。我将插入很多,只在最后阅读一次。
我想要的功能是在指定的索引处添加一个元素,在< 0,current_length>之间的任何地方。哪个系列最有效?
答案 0 :(得分:0)
有用的链接供您参考: http://www.coderfriendly.com/wp-content/uploads/2009/05/java_collections_v2.pdf
不完全确定您将如何阅读输入信息(以及它对您的重要性)。根据您的目的,Hashmap或ArrayList会有意义。也不确定你是否正在寻找线程安全的东西。 希望它有所帮助。
答案 1 :(得分:-2)
使用List
的低效率是问题的特有现象。每次添加内容时,每个后续元素都必须重新编入索引 - 如javadoc所述:
移动当前位于该位置的元素(如果有)和任何元素 右边的后续元素(在索引中加一个)。
从您的问题/评论中,您似乎有一堆Object
,并且您正在对它们进行排序。我建议更有效地解决这个问题的方法是编写Comparator
(或创建对象实现Comparable
),然后使用Collections.sort(list, comparator)
(或Collections.sort(list)
)
您可能会建议您的Object
根据其他变量进行排序。在这种情况下,您可以创建Object
的扩展名,将其他变量作为字段并扩展Comparable
,并使用getOriginal()
等方法。将这些包装的对象添加到列表中,排序,然后遍历列表,将原始对象(从getOriginal()
)添加到新列表中。
有关集合排序算法的信息 - 请参阅此SO question