繁体   English   中英

如何安全地从 Map 中检索 ArrayList<String, Object>

[英]How to safely retrieve ArrayList from Map<String, Object>

如何从 Map 中安全地检索一个 ArrayList 对象,其中为键存储的值是一个 ArrayList。 下面是我的代码。 有没有其他方法可以代替对 ArrayList 的强制转换?

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("A"); list.add("B");

    Map<String, Object> map = new HashMap<String, Object>();
    map.put("list", list);
    System.out.println(map.get("list").getClass()); // class java.util.ArrayList
    List<String> l = (ArrayList<String>)map.get("list");
}

我使用Jackson@JsonAnySetter来存储Map<String, Object> 当我检查课程时,它们属于java. util.ArrayListjava. util.ArrayList java. util.ArrayList (与问题中解释的确切情况相同)。

在尝试了几件事之后,我能够得到它。 我知道我有点晚了,但希望这会对将来的人有所帮助:

我有Map<String, Object> Object正在存储另一个MapStringArrayList所以我做了以下事情来从我的Map获取值。 您可以将其用作参考,并根据您需要的类型执行不同的操作。

public void marshal(Map<String, Object> extensions) {
    for (Map.Entry<String, Object> property : extensions.entrySet()) {
       if (property.getValue() instanceof ArrayList) {
            for (Object dupItems : (ArrayList<String>) property.getValue()) {
                 if (dupItems instanceof Map) {
                    //do whatever you want to do Map type
                  } else if(dupItems instanceof String) {
                    //do whatever you want to do for String type
                  }
            }
        } 
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM