HashMap <long,string =“”>和HashMap&lt;&gt ;?之间有什么区别?

时间:2015-07-28 18:37:14

标签: java collections

之间有什么区别
Map map = new HashMap<>();

a=20;

哪种更好用,为什么?

2 个答案:

答案 0 :(得分:0)

规范HashMap<Long, String>()仅适用于参数类型。但是你显示的两个用例都很糟糕(我只是称之为错误),因为map对象没有参数类型。你应该做的是

Map<Long, String> map = new HashMap<Long, String>();

相同
Map<Long, String> map = new HashMap<>();

这两行之间的唯一区别是你是否想要依赖JDK的自动类型推断。

<强>附录:

  1. 正如Boris所证实的那样,在JDK7之前,自动类型推断是不可能的,初始化地图的第二种方法也不会编译。
  2. 如果你使用的是IDE(真的希望你是这样),请注意关于参数化类型的原始使用的警告。

答案 1 :(得分:0)

确实应该是Map<Long, String> map = new HashMap<>(); <>中的2个字段代表地图的键和值类型。所以在这个例子中,它是一个由Long值引用的字符串映射。将它们包含在声明中会强制Map确保地图只能具有特定的键/值类型。过去,类型必须包含在赋值的<>中,但自Java 7以来就不需要它。