从unmodifiableSet创建unmodifiableSet

时间:2013-03-05 10:40:38

标签: java collections immutability

Collections.unmodifiableSet允许我创建一个集合的不可修改的视图。我假设这是通过包装提供的集合来完成的。如果从已经不可修改的集合创建不可修改的集合,是否会出现任何性能问题?

e.g。

Set<String> set = Collections.unmodifiableSet(Collections.unmodifiableSet(Collections.unmodifiableSet(new HashSet<String>())));

2 个答案:

答案 0 :(得分:0)

Collections.unmodifiableSet - 只使用UnmodifiableSet实例包装一个集合,该实例只代理所有方法调用。额外的有限方法调用序列不是性能考虑的主题,当然,如果你不是在谈论成千上万的包装器。

答案 1 :(得分:0)

方法签名是:

public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
    return new UnmodifiableSet<T>(s);
}
课程Collections中的

。这将返回对象UnmodifiableSet的新实例。现在这个类是内部静态类:

static class UnmodifiableSet<E> extends UnmodifiableCollection<E> implements Set<E>, Serializable

在课程UnmodifiableCollection中,addremoveaddAllthrows UnsupportedOperationException等方法。这就是原因Unmodifiable

现在,如果你实例化数千次,那么它就会成为问题。