1

我需要在集合中存储大量字符串。我不需要地图,因为我只有钥匙。数据大小可能达到 400 万或更大。目前我正在使用 LinkedHashSet。linkedhashSet 的性能很好,但它使用了大量的内存。我尝试了 LinkedList,它花费了太多时间。

我的要求是我需要维护插入顺序。检查列表/集合中的每个项目是否存在,然后再抛出错误(如果存在)。

我也尝试使用逗号分隔的字符串,但它也没有带来太大的改进。

任何人都可以提出更好的解决方案。

4

2 回答 2

1

TreeSet 非常适合维护秩序。还要确保您使用适当的搜索算法来检查您的条目的集合,这可以大大提高您的性能!

于 2012-11-27T10:10:44.327 回答
1

您是否尝试实现 TRIE?它维护按字母顺序排序的单词,并且占用更少的内存,因为您不为每个字符串维护单独的对象。相反,您只在一个节点中存储一个字符。请参阅https://forums.oracle.com/forums/thread.jspa?messageID=8787521http://en.wikipedia.org/wiki/Trie

于 2012-11-27T10:11:29.897 回答