Java: Performance Implications of Inline Initialization Of HashMaps
本问题已经有最佳答案,请猛点这里访问。
遇到了这种独特的初始化Java地图的方法。
以下代码似乎正在使用匿名类扩展hashmap类,然后使用(非静态)初始值设定项块。
1 2 3 4 5 6 7 |
使用上述代码以内联方式初始化哈希映射的性能含义是什么?
我没见过这个经常使用。它被认为是一个很好的Java实践吗?
@戴维森这个问题已经讨论了很多次了。即使数据结构不同(set,hashset),而不是(map,hashmap),我个人认为以下是最好的讨论,应该澄清您的所有疑问:Java"双括号初始化"的效率?
What are the performance implication of using the above code to initialize hashmaps inline?
几乎没有。第一次这样做时,会有额外的类加载,除非您关心所使用的类的数量,否则这不太重要。
I have not seen this being used very often. Is it considered to be a good java practice ?
如果它能使代码更清晰,特别是在单元测试中,我会说这是一个很好的实践。
不好的做法是,如果将此集合放入本地线程中,因为这样可以防止模块卸载。
这不是一个好的实践,因为它创建了一个新的匿名内部类,JVM必须使用更多的内存来跟踪它。除此之外,它基本上是无害的。
编写此代码的更好方法是使用初始化块:
1 2 3 4 5 6 7 |