2012-06-10 73 views
1

我正在考虑使用最适合随机插入的Java集合。我会插入很多内容,并且只在最后一次阅读集合。Java随机插入集合

我希望的功能是在指定索引处添加一个元素,位于< 0,current_length>之间的任何位置。哪个收藏最有效?

+0

什么语言是您使用? – beerbajay

+1

这些指数是否为连续范围? –

+0

Java。该集合将增长,并且索引将在范围0长度 – Bober02

回答

0

有用的链接,供大家参考: http://www.coderfriendly.com/wp-content/uploads/2009/05/java_collections_v2.pdf

不完全知道你将如何读取信息后输入(以及如何重要的是它给你)。根据你想要做的事情,Hashmap或者ArrayList是有意义的。也不知道你是否正在寻找线程安全或不安全的东西。 希望它有帮助。

+1

什么?随机插入到ArrayList中? – unbeli

+0

@unbeli - 我可能误解了这个问题,但我认为你也不清楚它的理解。 –

-2

使用List的效率低下是该问题的特点。你添加的东西每一次,以后每元素将不得不重新索引 - 为javadoc状态:

班次目前该位置的元素(如果有的话)和任何 后续元素向右移动(增加了一个到他们的指数)。

从您的问题/评论,它会显示你有一堆Object s,并且你正在对它们进行排序。我建议对这个问题更有效的解决方案是编写Comparator(或使您的对象实现Comparable),然后使用Collections.sort(list, comparator)(或Collections.sort(list))。

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

对于集合的排序算法上的信息 - 看到这个SO question

+0

列表是一个界面,它不能低效。插入LinkedList是O(1),但你需要首先找到。 SkipList可能会有所帮助,但它不在JRE中。 – unbeli