【发布时间】:2014-11-25 03:39:16
【问题描述】:
遇到了这种内联初始化 Java 映射的特殊方式。
以下代码似乎是使用匿名类扩展 Hashmap 类,然后使用(非静态)初始化程序块。
Map<String, String> aMap = new HashMap<String, String>()
{{
put("gloves", "hand");
put("hat", "head");
put("shoes", "feet");
put("scarf", "neck");
}};
使用上述代码内联初始化哈希图对性能有何影响?
我还没有看到这个被经常使用。 这被认为是一种好的 Java 实践吗?
【问题讨论】:
-
你为什么不写一个测试应用程序来初始化一些测试图并自己看看?
-
我想到的第一个问题是匿名类在编译后会产生一个extra .class 文件。关于性能...如果要在静态初始化中使用它(=在 JVM 中只使用一次),我认为性能不会有什么大不了的。不确定是否是一种好的做法,因为匿名类不可重用,并且扩展类应该旨在改变其行为。
-
@ZeroOne 正确地对 JIT 代码进行基准测试非常困难。在诉诸基准之前,必须了解为什么这样的事情应该会更快或更慢。
标签: java performance hashmap jvm initialization