e.g。 我需要我的ArrayList应该在每个索引处包含hashmap,例如
Public class Testing { private ArrayList < < HashMap< String, String>> myData ; public static void main(String[] args) { myData = new ArrayList < HashMap < String, String>>(); initialize(); //After initialize myData should contain different Hashmaps. } public static void initialize() { for (int i= 0; i < 10 ;i++) { myMap = new HashMap(); //Bad because,creating Objects inside the loop. myMap.put("title", "abc"+i); //Adding i, just to show that new values are stored everytime myMap.put("name", "xyz"+i); myData.add(myMap); } } }
上面的代码每次都会在循环中创建哈希映射对象, 什么是更好的方法,这样我每次都可以避免创建对象? 我在Android中使用此代码,但我认为这更通用,并且与Java有关。
答案 0 :(得分:5)
如果您需要地图列表,那么您就必须这样做,没有办法解决这个问题。 (实际上,你可以编写一个辅助方法,在第一次访问时初始化地图,只通过帮助方法访问地图,但我不建议这样做。)
但您可以重新考虑您的设计并使用不同的数据结构,也许可以转换Map / List关系并使用Guava Multimap
。这只会在需要时初始化集合,并且您可以保存初始化例程。
此外,地图列表通常可以由自定义对象列表替换。根据键是否是动态的,自定义对象可能更有意义。
答案 1 :(得分:1)
通常清晰度比性能更重要。在这个例子中,编译它将是一个改进。 ;)
你没有创造足够的对象来真正重要,但减少消耗的一种方法是使用POJO而不是HashMap。
答案 2 :(得分:0)
我认为这不好。
既然你想要一个ArrayList<<HashMap<String, String>>
,就没有错。即使没有难闻的气味:)