如何从嵌套多图获取第二个键和值

时间:2019-04-09 10:16:39

标签: java data-structures multimap

我有一个复杂的JsonObject,并且想使用嵌套的Guava多图存储值,因为键可以重复。问题是,如果我拥有外部多重贴图的密钥,该如何访问内部多重贴图。

这是我到目前为止所做的。

Multimap<String, Multimap<String, List<ZoneOrders>>> dictionaryfinal;

Multimap<String, List<ZoneOrders>> dictionaryOrders;

dictionaryfinal = LinkedHashMultimap.create();
dictionaryOrders = LinkedHashMultimap.create();

然后我通过json响应在循环中存储我的值,如下所示:

dictionaryOrders.put(zoneland, zoneorder);                  
dictionaryfinal.put(zonetype, dictionaryOrders);

我能够轻松地使用外部多图的键集

dictionaryfinal.keySet().

从上面获得一个键之后,我要访问链接到所选键的内部多图。

这是我尝试过的,以便我可以访问内部多重贴图:

Multimap<String, List<ZoneOrders>> ordinaryold  = LinkedHashMultimap.create();

ordinaryold = dictionaryfinal.get(item);

但这不起作用。我收到错误不兼容的类型。不知道我在做什么错。

1 个答案:

答案 0 :(得分:1)

我认为您要使用的不是67 * 31^2 + 97 * 31^1 + 116 * 31^0 = 67 * 31^2 + 97 * 31 + 116 = 64387 + 3007 + 116 = 67510 ,而是普通的Multimap

您正在使用的Map(大概是Multimap<K,V>,因为您没有说)实际上是Guava

如果您改用Map<K, Set<V>>,则嵌套应该起作用:

Map

然后,如果您获得Map<String, Map<String, List<ZoneOrders>>> dictionaryfinal = new LinkedHashMap<>(); Map<String, List<ZoneOrders>> dictionaryOrders1 = new LinkedHashMap<>(); dictionaryOrders1.put(zoneland, zoneorder); dictionaryfinal.put(zonetype1, dictionaryOrders1); Map<String, List<ZoneOrders>> dictionaryOrders2 = new LinkedHashMap<>(); dictionaryOrders2.put(zoneland2, zoneorder2); dictionaryfinal.put(zonetype2, dictionaryOrders2); 的商品,则可以通过以下方式简单地获取其嵌套的zonetype1

Map

Map<String, List<ZoneOrders>> values1 = dictionaryfinal.get(zonetype1); 仅对应于values1的内部多重映射。