【发布时间】:2013-12-23 22:17:38
【问题描述】:
由于许多单词可能具有相同的长度,因此对某个数据库的插入操作可能会很昂贵。
我看到了以下关于按长度存储和排序单词的建议。哪个效率最高?
Key:单词的长度,Value:具有该长度的所有单词的集合。 使用哈希映射: Sorting all words in a file by length, in one read. (Java)
使用 Guava 的 MultiMap: https://stackoverflow.com/a/4244798/2653179
树图?或者将单词存储在 ArrayList 中,编写比较函数,然后使用 Collections.sort: Java: Sort a list of words by length, then by alphabetical order
或其他建议?
【问题讨论】:
-
这在很大程度上取决于场景。您能否解释一下“由于许多单词可能具有相同的长度,因此对某个数据库的插入操作可能代价高昂”是什么意思?按长度分组单词如何影响数据库插入?
-
trie是一个选项吗? -
按长度排序后,您打算如何处理数据?检索特定单词需要多长时间是否重要,还是只想列出所有长度相同的单词?
-
@AndreyChaschev,插入时单词不按长度分组。插入可以是 O(N)。
-
@nachokk,当然,任何有效的方法都会有所帮助。 :)
标签: java