首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在MultiKeyMap上迭代?

如何在MultiKeyMap上迭代?
EN

Stack Overflow用户
提问于 2016-02-12 21:43:09
回答 3查看 9.9K关注 0票数 5

我正在使用来自公共集合的MultiKeyMap,它提供多键值对。我有三个键是字符串。我有两个问题,我不知道如何解决。

如何在所有多键值对上迭代?用一个简单的HashMap,我就知道了。

第二,如何得到所有的多键值对与前两个键固定?这意味着我希望得到类似于这个multiKey.get("key1","key2",?);的东西,其中没有指定第三个键。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-12 22:12:04

MultiKeyMap的键值上的迭代类似于散列映射:

代码语言:javascript
运行
复制
    MultiKeyMap<String, String> multiKeyMap = new MultiKeyMap();

    multiKeyMap.put( "a1", "b1", "c1", "value1");
    multiKeyMap.put( "a2", "b2", "c2", "value1");

    for(Map.Entry<MultiKey<? extends String>, String> entry: multiKeyMap.entrySet()){
        System.out.println(entry.getKey().getKey(0)
                +" "+entry.getKey().getKey(1)
                +" "+entry.getKey().getKey(2)
                + " value: "+entry.getValue());
    }

对于第二个请求,您可以根据前面的迭代编写自己的方法。

代码语言:javascript
运行
复制
public static Set<Map.Entry<MultiKey<? extends String>, String>> match2Keys(String first, String second,
                                                                                MultiKeyMap<String, String> multiKeyMap) {
        Set<Map.Entry<MultiKey<? extends String>, String>> set = new HashSet<>();
        for (Map.Entry<MultiKey<? extends String>, String> entry : multiKeyMap.entrySet()) {
            if (first.equals(entry.getKey().getKey(0)) 
                && second.equals(entry.getKey().getKey(1))) {
                set.add(entry);
            }
        }
        return set;
    }
票数 6
EN

Stack Overflow用户

发布于 2020-04-29 10:03:49

我使用的是commons-collections 4.4版本,它提供了forEach方法。它可用于以下几个方面。

代码语言:javascript
运行
复制
MultiKeyMap<String,Integer> multiKeyMap=new MultiKeyMap<>();
        multiKeyMap.put("class 9","Div A",30);
        multiKeyMap.put("class 9","Div B",40);
        multiKeyMap.forEach((key,value)->{
            System.out.println(key.getKey(0)+" & "+key.getKey(1)+" -> "+value);
        });

Output:
class 9 & Div A -> 30
class 9 & Div B -> 40
票数 3
EN

Stack Overflow用户

发布于 2020-05-15 10:33:59

可以在value()中迭代列表:

代码语言:javascript
运行
复制
    for(Object entry: multiKey.values()){ //TODO }

我刚发现这是一个四年前的问题..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35372673

复制
相关文章

相似问题

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