初始化HashMap的正确方法,HashMap可以容纳不同的值类型吗?

所以我对HashMapJava中的s 有两个问题:

  1. 初始化a的正确方法是HashMap什么?我认为在我的情况下最好使用:
    HashMap x = new HashMap();

但是Eclipse一直建议我使用:

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

哪个更好?

  1. 可以HashMap将不同类型的对象/数据类型保存为值吗?例如,是否可以正常工作:

        map.put("one", 1);

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

map.put("three", "hello");

在第一个中put(),我想要一个inta作为值​​,在第二个中,我想要int[]一个字符串。用HashMaps

在Java中可以吗?另外,可以将a 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库(尽管很容易自己做)具有一种称为的方法newHashMap(),该方法可以避免在执行时复制通用类型信息new。它从变量声明中推断类型(这是Java

7之前的构造函数不可用的Java功能)。

顺便说一句,当您添加一个int或其他原始类型时,Java会将其自动装箱。这意味着该代码等效于:

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

您当然可以将a

HashMap作为值放置在另一个值中HashMap,但是我认为如果递归地进行操作(将HashMapa作为值​​本身放置)会出现问题。

以上是 初始化HashMap的正确方法,HashMap可以容纳不同的值类型吗? 的全部内容, 来源链接: utcz.com/qa/426085.html

回到顶部