![](/img/trans.png)
[英]How to leverage flatMap() to convert a List of Strings to desired Map object?
[英]How can i convert Map of Strings and Object to a Map of Strings and List
我有方法应该返回Map<Strings, List<String>>
但同时我的方法给了我一个Map<Strings, Object>
,我想将对象的值传递给一个字符串列表。
这是当前的代码:
@SuppressWarnings("unchecked")
static Map<String, List<String>> getQueryParameters(JsonObject inputJsonObject) {
JsonArray parameters = inputJsonObject.getJsonArray("parameters");
Optional<JsonObject> queryParameters = parameters.stream().
filter(JsonObject.class::isInstance).
map(JsonObject.class::cast).
filter(jsonObject -> jsonObject.getJsonObject("queryParameters") != null).
map(item -> item.getJsonObject("queryParameters")).findFirst();
Map<String, Object> paramMap = queryParameters.get().getMap();
paramMap
包含键和值,值可以是整数数组,因此我想将它们放入下面的地图中:
Map<String, List<String>> mystore = new LinkedHashMap<String, List<String>>();
我的解决方案是这个无法正常工作
Map<String, List<String>> mystore = new LinkedHashMap<String, List<String>>();
Map<String, Object> paramMap = queryParameters.get().getMap();
Iterator it = paramMap.entrySet().iterator();
while (it.hasNext()) {
String key = it.next().toString();
if (!mystore.containsKey(key)) ;
mystore.put(key, new LinkedList<String>());
mystore.get(key).add(it.next().toString());
}
我是一个关键的另一个关键作为价值,只是一个混乱,任何建议? 在调试所发生的事情之后,我看到mystore将“键和值”同时作为键和值保存,它保持下一个“键和值作为值
应该是这样的:
while (it.hasNext()) {
Map.Entry<String, Object> next = iterator.next();
String key = next.getKey();
Object value = next.getValue();
if (!mystore.containsKey(key)) mystore.put(key, new LinkedList<String>());
mystore.get(key).add(value.toString());
}
我不会为你编写程序,而是帮助你找到问题。 你对Entry
感到困惑。 如果您使用的是IDE,则应该更容易解决。 寻找这一行:
String key = it.next().toString();
Entry
有K,V对。 迭代器返回一个EntrySet
,因此获取键的用法是it.next().getKey()
和it.next().getValue()
现在你有了正确的密钥,请继续调试。 而不是在代码的下面行放置和获取和操作。 换成正确的价值?
你:
mystore.put(key, new LinkedList<String>());
mystore.get(key).add(it.next().toString());
关于什么? :
Entry entry = it.next();
//Get key and value here. DO coding using Entry's methods
List<String> ll = new LinkedList<String>();
ll.add(value)
mystore.put(key, ll);
提示:为了解更多信息,请始终使用Javadoc或参考文档。 这就是你学习语言的方式。 请参阅: https : //docs.oracle.com/javase/7/docs/api/java/util/Map.Entry.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.