gpt4 book ai didi

java - 初始化HashMap的正确方法,HashMap可以保存不同的值类型吗?

转载 作者:IT老高 更新时间:2023-10-28 13:53:59 25 4
gpt4 key购买 nike

所以我有两个关于 Java 中的 HashMaps 的问题:

  1. 初始化HashMap的正确方法是什么?我认为在我的情况下使用它可能是最好的:

    HashMap x = new HashMap();

    但 Eclipse 一直建议我使用:

    HashMap<something, something> map = new HashMap();

    哪个更好?

  2. HashMap 可以保存不同类型的对象/数据类型作为值吗?例如,这是否可行并且可以:

    map.put("one", 1);
    map.put("two", {1, 2});
    map.put("three", "hello");

    在第一个 put() 中,我想要一个 int 作为值,第二个是 int[],第三个是字符串。在 Java 中使用 HashMap 可以这样做吗?另外,是否可以将 HashMap 作为值存储在 HashMap 中?

最佳答案

这真的取决于你需要什么样的类型安全。非泛型的做法最好如下:

 Map x = new HashMap();

请注意,x 被键入为 Map。这使得将来更改实现(到 TreeMapLinkedHashMap)变得更加容易。

您可以使用泛型来确保一定程度的类型安全:

Map<String, Object> x = new HashMap<String, Object>();

在 Java 7 及更高版本中,您可以这样做

Map<String, Object> x = new HashMap<>();

以上内容虽然更详细,但避免了编译器警告。在这种情况下,HashMap的内容可以是任何Object,所以可以是Integerint[]等,这就是你正在做的事情。

如果您仍在使用 Java 6,Guava Libraries (虽然自己做很容易)有一个方法叫做 newHashMap()这避免了在您执行 new 时复制通用类型信息的需要。它从变量声明中推断出类型(这是 Java 7 之前的构造函数中不可用的 Java 特性)。

顺便说一句,当您添加一个 int 或其他原语时,Java 会自动装箱它。这意味着代码相当于:

 x.put("one", Integer.valueOf(1));

您当然可以将 HashMap 作为值放在另一个 HashMap 中,但我认为如果您以递归方式执行此操作(即放入 HashMap 本身就是一个值)。

关于java - 初始化HashMap的正确方法,HashMap可以保存不同的值类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com