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