返回集合的副本或克隆以防止可变性
Returning copies or clones of collections to prevent mutability
我需要为 HashMap 的值提供一个 getter 方法,但是我不允许对返回的 Collection 或其元素进行更改,这些元素将反映在原始 HashMap 中,我正在获取值设置自。我目前是这样做的:
public Collection<T> getCollection() {
Collection<T> collection = map.values();
return collection;
}
这是否足以实现我打算做的事情,或者对返回的 Collection 的更改是否仍会反映在我的 HashMap 中?我问的原因是因为我知道对 Collection 的任何更改都会返回我的 Map 的 .values() 方法反映在原始 Map 中。谢谢!
如果您想查看值,可以使用 Collections.unmodifiableCollection
public Collection<T> getCollection() {
Collection<T> view = Collections.unmodifiableCollection(map.values());
return view;
}
这会给你一个 view
,即:客户不能改变它,但改变对他们是可见的。
我需要为 HashMap 的值提供一个 getter 方法,但是我不允许对返回的 Collection 或其元素进行更改,这些元素将反映在原始 HashMap 中,我正在获取值设置自。我目前是这样做的:
public Collection<T> getCollection() {
Collection<T> collection = map.values();
return collection;
}
这是否足以实现我打算做的事情,或者对返回的 Collection 的更改是否仍会反映在我的 HashMap 中?我问的原因是因为我知道对 Collection 的任何更改都会返回我的 Map 的 .values() 方法反映在原始 Map 中。谢谢!
如果您想查看值,可以使用 Collections.unmodifiableCollection
public Collection<T> getCollection() {
Collection<T> view = Collections.unmodifiableCollection(map.values());
return view;
}
这会给你一个 view
,即:客户不能改变它,但改变对他们是可见的。