如何将字符串和对象映射转换为字符串和列表映射

时间:2018-07-12 06:47:58

标签: java dictionary

我有应该返回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同时将“键和值”作为键和值保存在一起,它将下一个“键和值作为值”保存

2 个答案:

答案 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