【发布时间】:2013-07-18 00:58:42
【问题描述】:
我的函数返回一个 HashMap 成员的键集。
来自the JavaDoc:
集合由地图支持,因此对地图的更改会反映在集合中,反之亦然。
我想避免这种行为。
我想返回一个不可修改的集合,也许是该集合的副本。
我不希望对集合或地图的更改相互反映。
是否有任何最佳实践来处理这种情况?
【问题讨论】:
-
您是否担心改变集合的结构,改变集合中项目的属性,或两者兼而有之?如果您只担心第一件事,只需创建一个新 Set:
Set<Foo> freshSet = new HashSet<Foo>(map.keySet());