初始化HashMap的正确方法,HashMap可以容纳不同的值类型吗?
所以我对HashMap
Java中的s 有两个问题:
- 初始化a的正确方法是
HashMap
什么?我认为在我的情况下最好使用:HashMap x = new HashMap();
但是Eclipse一直建议我使用:
HashMap<something, something> map = new HashMap();
哪个更好?
- 可以
HashMap
将不同类型的对象/数据类型保存为值吗?例如,是否可以正常工作:
map.put("one", 1); map.put("two", {1, 2});
map.put("three", "hello");
在第一个中put()
,我想要一个int
a作为值,在第二个中,我想要int[]
一个字符串。用HashMap
s
在Java中可以吗?另外,可以将a HashMap
作为值存储在HashMap
?中吗?
回答:
这实际上取决于您需要哪种类型的安全性。最好的非通用方式是:
Map x = new HashMap();
请注意,x
键入为Map
。这使将来更改实现(更改为TreeMap
或LinkedHashMap
)变得容易得多。
您可以使用泛型来确保一定级别的类型安全:
Map<String, Object> x = new HashMap<String, Object>();
在Java 7及更高版本中,您可以执行
Map<String, Object> x = new HashMap<>();
上面虽然比较冗长,但却避免了编译器警告。在这种情况下的内容HashMap
可以是任意Object
,这样可以Integer
,int[]
等这是你在做什么。
如果您仍在使用Java 6,则Guava库(尽管很容易自己做)具有一种称为的方法newHashMap()
,该方法可以避免在执行时复制通用类型信息new
。它从变量声明中推断类型(这是Java
7之前的构造函数不可用的Java功能)。
顺便说一句,当您添加一个int或其他原始类型时,Java会将其自动装箱。这意味着该代码等效于:
x.put("one", Integer.valueOf(1));
您当然可以将a
HashMap
作为值放置在另一个值中HashMap
,但是我认为如果递归地进行操作(将HashMap
a作为值本身放置)会出现问题。
以上是 初始化HashMap的正确方法,HashMap可以容纳不同的值类型吗? 的全部内容, 来源链接: utcz.com/qa/426085.html