2

哪种数据结构更适合用 Java 制作字典?树或哈希表哪个更好?

4

4 回答 4

5

一张地图。没有其他的。如果要排序,请使用 TreeMap。否则:HashMap。

字典将(关键)词映射到它的描述或翻译。

于 2012-10-18T18:55:04.150 回答
1

我会使用类似的东西

Map<String,Integer> dictionary = Collections.synchronizedMap(new TreeMap<String,Integer>());

您可以使用 Class 对象代替 Integer 作为 String 键的值,该对象可能可以保存一个列表,该列表包含该单词在文档中的所有位置。有一些方法可以轻松地从TreeMap. 以下是您获取迭代器的方式TreeMap.

Set<Entry<String,Integer>> set = dictionary.entrySet();

Iterator<Entry<String,Integer>> entryItr = set.iterator();

Entry<String,Integer> entry = null;

while(entryItr.hasnext()){
entry = entryItr.next();
// Do whatever you want.
}
于 2012-10-18T18:59:19.493 回答
0

我会使用 Trie,尤其是为了提高内存效率和前缀查找。我有一个在 github 上实现 APL 下的地图接口的实现:https ://github.com/Blazebit/blaze-utils/tree/c7b1fa586590d121d9f44c1686cb58de0349eb0b/blaze-common-utils

检查一下,也许它比简单的地图更适合您的需求。

于 2012-10-19T09:34:24.583 回答
0

根据麻省理工学院算法简介中的讲座,我会说最好使用哈希表。因为您可以在 O(1) 而不是 O(logn) 中进行操作

https://www.youtube.com/watch?v=0M_kIqhwbFo

于 2016-02-09T02:53:24.523 回答