当前位置: 首页 > 面试题库 >

这些初始化HashMap的方式之间有什么区别?

秦胡媚
2023-03-14
问题内容

我为程序使用了HashMap,它运行良好,但是我不理解HashMap的这些初始化之间的区别。

假设我正在实现一个HashMap,以字符作为键,并以整数作为值。这些有什么区别?

HashMap<Character, Integer> alphabet1 = new HashMap();
HashMap<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
Map alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap<Character, Integer>();
HashMap alphabet1 = new HashMap();
Map alphabet1 = new HashMap();

问题答案:

任何涉及HashMapMap不涉及类型实参的内容(尖括号<和>及其之间的部分)都是原始类型,不应使用。原始类型不是通用类型,可以让您做不安全的事情。

“正确”的方法是

Map<Character, Integer> alphabet1 = new HashMap<Character, Integer>();
HashMap<Character, Integer> alphabet1 = new HashMap<Character, Integer>();

第一种使用接口Map作为参考类型。它通常比较惯用,风格也不错。

您还没有提到的另一种方式,使用Java 7Diamond运算符

Map<Character, Integer> alphabet1 = new HashMap<>();
HashMap<Character, Integer> alphabet1 = new HashMap<>();

大致相当于前两种正确方法。左侧引用类型的参数隐式提供给右侧的构造函数。



 类似资料:
  • 我在我的程序中使用了HashMap,它工作得很好,但是我不明白HashMap的这些初始化之间的区别。 假设我正在实现一个HashMap,其中字符为键,整数为值。这两者之间有什么区别?

  • 问题内容: 在Go的整个Google App Engine文档中,它们可互换使用库。这是一个例子: 我应该使用哪些库?主要区别是什么? 问题答案: cloud.google.com/go/datastore是Cloud Datastore rest API(可从任何地方使用)的客户端库。 google.golang.org/appengine/datastore是App Engine API的一部

  • 问题内容: 在Java中,我可以通过以下方式初始化具有预定义内容的数组: 或通过: 本质上,这两种方式之间有什么区别吗?它们在Java中是否完全相同?哪种方法更好,为什么呢? 问题答案: 就您而言,没有区别。 当您不将变量分配给变量并进行内联创建时,将会有所 不同。 例如,考虑有一个方法,它以数组作为参数。 您的情况: 现在在其他情况下调用它时可以看到区别。

  • 问题内容: 我有这个代码: 这会导致编译错误:可能尚未初始化,这很公平。 现在,我将代码更改为: 我得到同样的编译错误!我必须初始化为null: 那么,不初始化对象和初始化为null有什么区别?如果我声明一个没有初始化的对象,它是否为null? 谢谢 问题答案: 字段(成员变量)被初始化为(或初始化为默认的原始值,如果它们是原始的) 局部变量未初始化,您有责任设置初始值。

  • 这个问题似乎离题了,因为它缺乏足够的信息来诊断问题 更详细地描述你的问题,或者在问题本身中包含一个最小的例子。 其中Fragment和Intent是构建类,FragmentABC是用户定义的类。 它非常基本,但仍然无法找出合理的差异来证明实例化。想知道这两种说法的区别是什么,请在你提供的答案中描述一下。

  • 我使用react native已有几个月了。然而,我真的不知道启动命令之间的区别。目前,我在我的项目中使用npm。然而,我知道纱线是可以使用的。这些命令我真的不理解它们的区别: exp-start、exp-ios、exp-android 本地运行ios npm启动、npm ios、npmAndroid 在什么情况下,哪些更好?为什么?目前,我使用exp,但其他人使用react本机运行的ios。我曾