我有一个复杂的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);
但这不起作用。我收到错误不兼容的类型。不知道我在做什么错。
答案 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
的内部多重映射。