java - 返回添加到 List<Object> 的 HashMap

标签 java list object hashmap

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

如果有人知道另一种解决方法,那就是 find 但我只需要使用一个列表。

最佳答案

Normally i thought i could just write: listOfObjects.get(0).get("x") and it would return "foo" but that does not work.

不,不会 - 因为 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> 的新类?)那就太好了。列表中的每个元素都是 map 吗?如果是这样,你为什么使用 List<Object>而不是一个更强类型的列表?如果某些元素不会成为 map ,您如何知道哪些元素会成为 map ? (这些都是你应该仔细考虑的事情。)

关于java - 返回添加到 List<Object> 的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14812668/

相关文章:

c# - 比较多个列表的大小(计数)

c++ - 当我用 case 语句调用自定义对象时,为什么不显示它?

class - Lua 检查表是否为 'instance'

javascript - 循环n个对象并返回最长的字符串

java - Jersey(Java 的 REST 框架)在生产中广泛使用吗?

java - 如何从存储在 ArrayList 中的多级 HashMap 中获取值?

java - XML 解析抛出 NullPointerException

java - 将List分成多个子List

java - 对象框重复文件异常

node.js - lrange 返回 false 而不是列表