gpt4 book ai didi

java - 返回添加到 List 的 HashMap
转载 作者:行者123 更新时间:2023-12-01 18:53:58 24 4
gpt4 key购买 nike

当我尝试返回已添加到类型列表中的 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/

24 4 0