HashMap Initialization 初始化写法
不同的初始化写法在可读性、序列化兼容性和性能上有一些差异,本文记录双括号初始化写法及其注意事项。本文原本是 HashMap 的一部分,因主题独立而拆分为单独文章。 双括号初始化 HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器。普通写法一般会这么初始化: HashMap<String, String> map = new HashMap<String, String>(); map.put("Name", "June"); map.put("QQ", "2572073701"); 看完这段代码,很多人都会觉得这么写太啰嗦了,对此,还有一种更紧凑的写法: HashMap<String, String> map = new HashMap<String, String>() { { put("Name", "June"); put("QQ", "2572073701"); } }; 看起来优雅了不少,一步到位。这里的双括号到底是什么意思呢?看看下面的代码就知道了: public class Test { /* private static HashMap<String, String> map = new HashMap<String, String>() { { put("Name", "June"); put("QQ", "2572073701"); } }; */ public Test() { System.out.println("Constructor called"); // constructor called } static { System.out.println("Static block called"); // static block called } { System.out.println("Instance initializer called"); // instance initializer called } public static void main(String[] args) { new Test(); System.out.println("======================="); new Test(); } } 输出: ...