How to avoid frequent creation of objects in a loop in java?
例如我需要在每个索引的arraylist中包含hashmap,例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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相关。
如果你需要一份地图清单,那就是你要做的,没有办法。(实际上,您可以编写一个helper方法,在第一次访问映射时对其进行初始化,并且只通过该helper方法访问映射,但我并不建议这样做)。
但是您可以重新考虑您的设计并使用不同的数据结构,也许可以改变映射/列表关系并使用一个guava
此外,地图列表通常可以替换为自定义对象列表。根据键是否是动态的,自定义对象可能更有意义。
通常,清晰度比性能更重要。在这个例子中,编译它将是一个改进。;)
您创建的对象不够重要,但减少其消耗的一种方法是使用pojo而不是hashmap。
我不认为这很糟糕。
既然你想要一个