我有一个地图列表,在for-loop中我想将一个Map添加到列表中。我听说使用map.clear()比创建一个新Map有更好的性能,但我的问题是List.add()与对象的引用一起工作,并且使用Map.clear()时引用不会消失。 / p>
是否有可能强制List.add()使用该值或构建其他解决方法?
答案 0 :(得分:3)
可以通过简单地创建Map
的副本并插入副本来插入“按值”。问题在于它根本不是优化。
您可以创建已填充Map
的副本并清除原始Map
,而不是仅创建新的空Map
。这意味着:您不会避免创建新对象的开销,还会引入复制和清除已填充Map
的额外工作。
关于优化的一点注意事项:
大约10%的代码会完成90%的工作(是的,这些数字是由这些数字组成的,但这是考虑优化和至少接近现实的常用方法)。不要在第一次运行时过度优化代码。只需轻松完成可以轻松完成的任务,而不会使代码的可读性降低,运行分析器并查找代码的瓶颈并优化代码。这比优化整个代码更有效,更容易。
答案 1 :(得分:1)
如果你不断重复使用相同的地图,那么清除它而不是抛弃旧地图来构建一个新地图是有意义的。
但是在这里,您不希望重复使用相同的Map,因为您希望将其存储在List中。如果要清除它以便重复使用它,则必须将Map的副本添加到列表中才能拥有独立的地图。哪一个具有更好的性能是低级优化。你永远不应该担心它,除非:
您应该使用与项目编码规则更清晰/一致的内容。我会在每次迭代中创建一个全新的地图,但这只是我的观点。但请不要在早期开发阶段进行低级优化。