繁体   English   中英

超级MultiValue映射的实现

[英]Implementation of super MultiValue map

超级MultiValue映射有任何现成的实现吗?

我需要一张地图

SuperMap<List<String>, List<String>> superMap

其中key List是一组键,而value List是一set值。

keys: {a, b, c}并且这些键中的任何一个的values: {1, 2, 3, 4, 5}这表示键a应该具有值{1, 2, 3, 4, 5}以及键bc

更新了评论的要求

我需要获得一组的所有钥匙吗? 例如,我需要获取一个相似值的键集合。 在那种情况下,我不能使用您的方法map.put("a", value); 因为我需要分组( a, b是第一组,而c与第二组有关)。

UPD2

我正在寻找一种简单且简洁的解决方案来替换此代码

Map<List<String>, List<String>> ops = new HashMap<List<String>, List<String>>() {{
        put(asList("a", "aaa"), asList("1", "2"));
        put(asList("b", "bbb"), asList("3", "4"));
}};

public static List<String> values(String optionKey) {
    for (List<String> key : ops.keySet()) {
        for (String k : key) {
            if (optionKey.equals(k)) {
                return ops.get(key);
            }
        }
     }
     return Collections.emptyList();
 }

与一些智能隐含形式的任何众所周知的库(谷歌番石榴或类似的东西)。

我认为您正在使数据结构过于复杂。 您可以简单地使用HashMap或类似的实现。

Map<String, List<String>> map = new LinkedHashMap<>();
List<String> value = new ArrayList<>();

// Fill the value list here...

map.put("a", value);
map.put("b", value);
map.put("c", value);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM