8.8.4 设置不可变集合
8.8.4 设置不可变集合
Collections
提供了如下三类方法来返回一个不可变的集合。
empty方法
这类方法返回一个空的、不可变的集合对象
方法 | 描述 |
---|---|
static <T> Enumeration<T> emptyEnumeration() |
Returns an enumeration that has no elements. |
static <T> Iterator<T> emptyIterator() |
Returns an iterator that has no elements. |
static <T> List<T> emptyList() |
Returns an empty list (immutable). |
static <T> ListIterator<T> emptyListIterator() |
Returns a list iterator that has no elements. |
static <K,V> Map<K,V> emptyMap() |
Returns an empty map (immutable). |
static <K,V> NavigableMap<K,V> emptyNavigableMap() |
Returns an empty navigable map (immutable). |
static <E> NavigableSet<E> emptyNavigableSet() |
Returns an empty navigable set (immutable). |
static <T> Set<T> emptySet() |
Returns an empty set (immutable). |
static <K,V> SortedMap<K,V> emptySortedMap() |
Returns an empty sorted map (immutable). |
static <E> SortedSet<E> emptySortedSet() |
Returns an empty sorted set (immutable). |
singleton方法
这类方法返回一个只包含指定对象(只有一个或一项元素)的、不可变的集合对象
方法 | 描述 |
---|---|
static <T> Set<T> singleton(T o) |
Returns an immutable set containing only the specified object. |
static <T> List<T> singletonList(T o) |
Returns an immutable list containing only the specified object. |
static <K,V> Map<K,V> singletonMap(K key, V value) |
Returns an immutable map, mapping only the specified key to the specified value. |
unmodifiable方法
返回指定集合对象的不可变视图
方法 | 描述 |
---|---|
static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) |
Returns an unmodifiable view of the specified collection. |
static <T> List<T> unmodifiableList(List<? extends T> list) |
Returns an unmodifiable view of the specified list. |
static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) |
Returns an unmodifiable view of the specified map. |
static <K,V> NavigableMap<K,V> unmodifiableNavigableMap(NavigableMap<K,? extends V> m) |
Returns an unmodifiable view of the specified navigable map. |
static <T> NavigableSet<T> unmodifiableNavigableSet(NavigableSet<T> s) |
Returns an unmodifiable view of the specified navigable set. |
static <T> Set<T> unmodifiableSet(Set<? extends T> s) |
Returns an unmodifiable view of the specified set. |
static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) |
Returns an unmodifiable view of the specified sorted map. |
static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) |
Returns an unmodifiable view of the specified sorted set. |
上面三类方法的参数是原有的集合对象,返回值是该集合的”只读”版本。通过Collections
提供的三类方法,可以生成”只读”的Collection
或Map
。
实例
1 | import java.util.*; |
上面程序的三行粗体字代码分别定义了一个空的、不可变的List
对象,一个只包含一个元素的、不可变的Set
对象和一个不可变的Map
对象。不可变的集合对象只能访问集合元素,不可修改集合元素。所以上面程序中①②③处的代码都将引发UnsupportedOperationException
异常。