java – 这些初始化HashMap的方法有什么区别?

我为我的程序使用了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();
任何涉及没有类型参数的HashMap或Map(尖括号<和>以及它们之间的部分)都是raw type and shouldn’t be used.原始类型不是通用的,可以让你做不安全的事情.

“正确”的方式是

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

第一个使用接口Map作为引用类型. It is generally more idiomatic and a good style.

另一种你没有提到的方式,using the Java 7 diamond operator

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

这或多或少等同于前两种正确的方法.左侧的引用类型的参数隐式提供给右侧的构造函数.

https://stackoverflow.com/questions/26565606/whats-the-difference-between-these-ways-of-initializing-a-hashmap

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 这些初始化HashMap的方法有什么区别?