例如 我需要我的 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); } } }
上面的代码每次循环都会创建 HashMap 对象, 有什么更好的方法可以避免每次都创建对象? 我在 Android 中使用这段代码,但我认为这更通用,并且与 Java 更多相关。
最佳答案
如果您需要 map 列表,那么这就是您必须做的,没有办法解决这个问题。 (实际上,您可以编写一个辅助方法,在首次访问时初始化 map ,并且仅通过该辅助方法访问 map ,但我真的不建议这样做)。
但是您可以重新考虑您的设计并使用不同的数据结构,也许扭转映射/列表关系并使用 Guava Multimap
。这只会在需要时初始化集合,并且您可以保存初始化例程。
此外, map 列表通常可以替换为自定义对象列表。根据按键是否动态,自定义对象可能更有意义。
关于java - java中如何避免在循环中频繁创建对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5014243/