是否已准备好实施超级MultiValue地图?
我需要一张地图
SuperMap<List<String>, List<String>> superMap
其中key
List是键集,值List是值set
。
keys: {a, b, c}
以及任何这些键的值均为values: {1, 2, 3, 4, 5}
这意味着键a
应具有值{1, 2, 3, 4, 5}
以及键b
和c
。
更新了评论中的要求
我需要获得一组的所有键?例如,我需要获取一个类似值的键集合。在这种情况下,我无法使用您的方法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();
}
有一些聪明的impl形式任何知名的lib(谷歌番石榴或其他东西)。
答案 0 :(得分:1)
我认为你的数据结构过于复杂。您只需使用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);