Collections.unmodifiableSet允許我創建集的不可修改的視圖。我假設這是通過包裝提供的集合來完成的。如果不可修改的集合是由已經不可修改的集合創建的,是否會有任何性能問題?從不可修改的集創建不可修改的集
例如
Set<String> set = Collections.unmodifiableSet(Collections.unmodifiableSet(Collections.unmodifiableSet(new HashSet<String>())));
Collections.unmodifiableSet允許我創建集的不可修改的視圖。我假設這是通過包裝提供的集合來完成的。如果不可修改的集合是由已經不可修改的集合創建的,是否會有任何性能問題?從不可修改的集創建不可修改的集
例如
Set<String> set = Collections.unmodifiableSet(Collections.unmodifiableSet(Collections.unmodifiableSet(new HashSet<String>())));
Collections.unmodifiableSet - 只是用UnmodifiableSet實例包裝一個集合,它只是代理所有的方法調用。額外的有限方法調用序列不是性能考慮的主題,當然如果你不是在談論數千個包裝。
的方法簽名是:
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
像add
,remove
,addAll
等throws UnsupportedOperationException
方法。這就是爲什麼它是Unmodifiable
。
現在,如果你實例化數千次當然是一個集合問題。