首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Map、groupby、值列表

Map、groupby、值列表
EN

Stack Overflow用户
提问于 2014-12-20 21:37:47
回答 1查看 83关注 0票数 1

给定一个有序映射<string,list<sting>>

代码语言:javascript
复制
k1 [v1,v2,v5]
k2 [v1]
k3 [v4,v5]
k4 [v2]

还有一组字符串存储桶:

代码语言:javascript
复制
v2 v4 v5

输出是一张地图:

代码语言:javascript
复制
v2 [k1,k4]
v4 [k3]
v5 [k1, k3]

输出中的顺序很重要。还有比简单的暴力破解更好的方法吗,编程语言是java ??

EN

回答 1

Stack Overflow用户

发布于 2014-12-20 22:11:12

只需迭代映射并将值收集到包含SortedSets的SortedMap中(例如,TreeMap of TreeSets),将排序和复制过程留给底层数据结构:

代码语言:javascript
复制
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());
        } 
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27580759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档