在java中创建字典?

时间:2014-04-26 15:15:29

标签: java dictionary hashmap treemap

网上到处都是,这是方式

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));

我的观点是不应该是Treemap,因为字典必须排序?同意查找不会在Treemap的情况下进行优化,但考虑对其最佳数据结构进行排序

更新: - 如果搜索到的单词不存在,还有一个要求是返回按字典顺序排列的最接近的单词。我不确定如何实现它?

3 个答案:

答案 0 :(得分:4)

如果 ,您需要按其键排序的地图,然后使用TreeMap,其中&#34; ...提供有保证的日志( n)containsKey,get,put和remove操作的时间成本。&#34; 如果没有,请使用更通用的HashMap&#34; ...提供常量 - 基本操作(get和put)的时间性能,假设散列函数在桶中正确地分散元素......&#34; ),或者其他Map实现之一,取决于你的需要。

答案 1 :(得分:0)

如果你想获得给定键的值,并且如果hashmap中键的精确匹配的概率较小,那么使用hashmap不会给你带来直接查找的好处。 如果使用TreeMap,您可以获得已经订购的密钥列表,并可以在列表上执行二进制搜索。在按字典顺序搜索比较键时。继续二进制搜索,直到两个键之间的字典距离最小或为0。

答案 2 :(得分:0)

Dictionary不再是该语言中使用的术语。你会得到多个答案。

我知道Objective-C使用一个名为Dictionary的类作为键/值数据结构。它被命名为Dictionary这一事实让我相信这是对象的排序,我想Key必须是stringchar

所以,这取决于整个问题。

当有人说他们想要创建按字母顺序排列的键/值数据结构,或者&#34; Dictionary&#34;时,答案是:

TreeMap<String, Object> map = new TreeMap<>()

如果有人询问如何使用任何语言创建类似于Dictionary的键/值对象,他们可能会获得实现java.util接口的任何Map<K, V>类,例如HashMapTreeMap。一个好的答案是TreeMap

在这种情况下,告诉某人使用HashMap是没有争议的,因为答案与问题一样模糊。