繁体   English   中英

返回HashMap添加到列表<Object>

[英]Return HashMap added to List<Object>

当我尝试返回添加到类型List<Object>的HashMap时,JAVA中出现问题。 我知道我可以使用其他类型的列表,但是我需要使用List<Object>

List<Object> listOfObjects = new ArrayList<Object>();

    HashMap<String, String> hashmap = new HashMap<String,String>();
    hashmap.put("x", "foo");
    hashmap.put("y", "bar");

    listOfObjects.add(hashmap);

    for (int i = 0; i < listOfObjects.size(); i++) {
        System.out.println(listOfObjects.get(i));
    }

我已经将哈希映射添加到listOfObject中,但是如何从listOfObject获取HashMap,以便可以使用HashMap命令。 fx:hashmap.get(“ x),它将返回” foo“。

通常我以为我可以这样写:listOfObjects.get(0).get(“ x”),它会返回“ foo”,但这是行不通的。

如果有人知道可以找到其他解决方法,但是我只需要使用一个列表即可。

通常我以为我可以这样写:listOfObjects.get(0).get(“ x”),它会返回“ foo”,但这是行不通的。

不,那不会-因为listOfObjects.get(0)的类型只是Object 您如何期望编译器知道它是映射?

您可以使用:

HashMap<String, String> map = (HashMap<String, String>) listOfObjects.get(0);
// Use map...

...但是要注意,由于Java中泛型的性质,这种类型的转换并不能真正确保映射中的所有键/值对都是“字符串到字符串”。 即使您最初使用过,转换也能正常工作:

Map<Integer, Integer> badMap = new HashMap<Integer, Integer>();
badMap.put(0, 10);
listOfObjects.add(badMap);

您会为此得到警告,但是了解其含义很重要。 尚不清楚用例是什么,但如果可以使其类型更强(可能创建一个包含 Map<String, String> ?的新类),那会很好。 列表中的每个元素都会成为地图吗? 如果是这样,为什么要使用List<Object>而不是更强类型的列表? 如果某些元素不会成为地图,那么您如何确定哪些元素将成为地图呢? (这些是您应该仔细考虑的事情。)

希望对您有帮助。

List<Object> listOfObjects = new ArrayList<Object>();

        HashMap<String, String> hashmap = new HashMap<String,String>();
        hashmap.put("x", "foo");
        hashmap.put("y", "bar");

        listOfObjects.add(hashmap);

        for (int i = 0; i < listOfObjects.size(); i++) {
            System.out.println(((HashMap<String, String>)listOfObjects.get(i)).get("x"));
        }

通常,您的列表属于对象类型。 因此,首先将其转换为HashMap类型,然后从map中获取值

请注意以下代码

 System.out.println(((HashMap<String, String>)listOfObjects.get(i)).get("x"));

暂无
暂无

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

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