0

我需要为 HashMap 的值提供一个 getter 方法,但是我不能允许对返回的 Collection 或其元素进行更改,这些元素将反映在我从中获取值集的原始 HashMap 中。我目前正在这样做:

public Collection<T> getCollection() {
    Collection<T> collection = map.values();
    return collection;
}

这是否足以实现我的目标,或者返回的 Collection 的更改是否仍会反映在我的 HashMap 中?我问的原因是因为我知道对 Collection 的任何更改都返回了我的 Map 的 .values() 方法反映在原始 Map 中。谢谢!

4

1 回答 1

2

如果您想查看可以使用的值Collections.unmodifiableCollection

public Collection<T> getCollection() {
 Collection<T> view = Collections.unmodifiableCollection(map.values());
 return view;
}

这会给你一个view,即:客户不能改变它,但改变对他们来说是可见的。

于 2016-05-04T12:16:30.963 回答