返回添加到List <object> </object>的HashMap

时间:2013-02-11 13:09:50

标签: java list object hashmap

我在JAVA中遇到问题,当我尝试返回已添加到类型列表:List<Object>的HashMap时。我知道我可以使用其他类型的列表,但我需要使用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));
    }

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

通常我认为我只能写:listOfObjects.get(0).get(“x”)并且它将返回“foo”但是这不起作用。

如果有人知道另外的工作,但我只需要使用List。

2 个答案:

答案 0 :(得分:3)

  

通常我认为我只能写: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>而不是更强类型的列表?如果某些元素不是地图,你怎么知道哪些是? (这些是你应该仔细考虑的事情。)

答案 1 :(得分:0)

我希望这会对你有所帮助..

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"));