搜索包含列表作为值的hashmap的每个值的最佳方法是什么?

时间:2014-06-17 14:17:12

标签: java list search hashmap

我有一个定义为:

的散列图
Map<String, List<String>> map = new HashMap<String, List<String>>();

地图用于搜索功能,其中键是名称,值是与该名称相关的所有关键字的列表。关键字不一定是每个名称唯一的。

搜索列表中存储的所有关键字的最快方法是什么?

2 个答案:

答案 0 :(得分:0)

考虑到你使用的结构,这里没有最快的方法。您只有一种方法 - 给定一个密钥,获取该密钥的关键字列表。然后遍历该关键字列表。

如果您想搜索所有关键字(包含在所有关键字列表中),无论其密钥是什么,那么我建议您同时保留所有关键字的HashSet。

答案 1 :(得分:0)

您没有提及您的列表是否已排序或每个列表是否必须允许重复值。

如果列表可以按值排序,则可以使用Collections.binarySearch。请注意,列表的具体类型应该是支持随机访问的实现 - 例如,ArrayList而不是LinkedList。

如果列表未排序且每个列表只包含每个值的一个副本,我建议将列表更改为集合(例如,HashSet或TreeSet)。

如果必须按插入顺序对列表进行排序,或者必须允许每个列表多次存储相同的值,则可以使用辅助集进行快速查找。