我需要为HashMap的值提供一个getter方法,但是我不能允许对返回的Collection或它的元素进行更改,这些元素将反映在原始的HashMap中,我将从中获取值集。我目前正在这样做:
public Collection<T> getCollection() {
Collection<T> collection = map.values();
return collection;
}
这是否足以实现我的目标,或者对返回的Collection的更改是否仍然反映在我的HashMap中?我问的原因是因为我知道对Collection的任何更改都返回了我的Map的.values()方法反映在原始Map中。谢谢!
答案 0 :(得分:2)
如果您想要查看值,可以使用Collections.unmodifiableCollection
public Collection<T> getCollection() {
Collection<T> view = Collections.unmodifiableCollection(map.values());
return view;
}
这会给你一个view
,即:客户不能改变它,但突变对他们来说是可见的。