我有应该返回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同时将“键和值”作为键和值保存在一起,它将下一个“键和值作为值”保存
答案 0 :(得分:2)
应该是这样的:
{
"errors": [
{
"code": 32,
"message": "Could not authenticate you."
}
]
}
答案 1 :(得分:1)
我不是为您编写程序,而是帮助您发现问题。您对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