猿问

如何从嵌套多映射中获取第二个键和值

我有一个复杂的JsonObject,并希望使用嵌套的番石榴多地图存储值,因为密钥可以复制。问题是如果我有外部多地图的键,我该如何访问内部多地图。


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


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);

但这行不通。我收到错误不兼容的类型。不知道我做错了什么。


繁华开满天机
浏览 92回答 1
1回答

呼啦一阵风

我认为你想用的不是一个,而只是一个普通的.MultimapMap您正在使用的(可能是那个,因为您没有说的那个)本质上是一个.Multimap<K,V>GuavaMap<K, Set<V>>如果您改用 ,您的嵌套应该可以工作:MapMap<String, Map<String, List<ZoneOrders>>> dictionaryfinal = new LinkedHashMap<>();Map<String, List<ZoneOrders>> dictionaryOrders1 = new LinkedHashMap<>();dictionaryOrders1.put(zoneland, zoneorder);&nbsp; &nbsp; &nbsp;&nbsp;dictionaryfinal.put(zonetype1, dictionaryOrders1);Map<String, List<ZoneOrders>> dictionaryOrders2 = new LinkedHashMap<>();dictionaryOrders2.put(zoneland2, zoneorder2);&nbsp; &nbsp; &nbsp;&nbsp;dictionaryfinal.put(zonetype2, dictionaryOrders2);然后,如果您获得项目,则可以通过以下方式将其嵌套:zonetype1Map&nbsp;Map<String, List<ZoneOrders>> values1 = dictionaryfinal.get(zonetype1);&nbsp; &nbsp;values1将仅对应于 的内部多映射。zonetype1
随时随地看视频慕课网APP

相关分类

Java
我要回答