给定一个有序映射<string,list<sting>>:
k1 [v1,v2,v5]
k2 [v1]
k3 [v4,v5]
k4 [v2]还有一组字符串存储桶:
v2 v4 v5输出是一张地图:
v2 [k1,k4]
v4 [k3]
v5 [k1, k3]输出中的顺序很重要。还有比简单的暴力破解更好的方法吗,编程语言是java ??
发布于 2014-12-20 22:11:12
只需迭代映射并将值收集到包含SortedSets的SortedMap中(例如,TreeMap of TreeSets),将排序和复制过程留给底层数据结构:
Map<String, List<String> input = ...;
Set<String> buckets = ...;
SortedMap<String, TreeSet> output = new TreeMap<String, TreeSet>();
for (Map.Entry<String, List<String> entry : input) {
List<String> possibleBuckets = entry.getValue();
for (String possibleBucket : possibleBuckets) {
if (buckets.contains(possibleBucket) {
Set<String> set = output.get(possibleBucket);
if (set == null) {
set = new TreeSet<String>();
output.put (possibleBucket, set);
}
set.add (entry.getKey());
}
}
}https://stackoverflow.com/questions/27580759
复制相似问题