在Java中,不可变集合(Immutable Collections)是指一旦创建后,其内容就不能被修改的集合。这些集合提供了一种安全的方式来处理不需要改变的数据,因为它们可以防止意外修改。Java标准库提供了一些工具来创建不可变集合,主要在java.util.Collections类中。
以下是一些创建不可变集合的方法:
Collections.unmodifiableList(List<? extends T> list)
这个方法接受一个列表,并返回一个不可修改的视图。任何试图修改这个列表的操作都会抛出UnsupportedOperationException。
Collections.unmodifiableSet(Set<? extends T> s)
类似于上面的方法,但是用于集合(Set)。
Collections.unmodifiableMap(Map<K,V> m)
这个方法接受一个映射,并返回一个不可修改的视图。任何试图修改这个映射的操作都会抛出UnsupportedOperationException。
Collections.unmodifiableSortedSet(SortedSet<T> s)
这个方法接受一个有序集合,并返回一个不可修改的视图。
Collections.unmodifiableNavigableSet(NavigableSet<T> s)
这个方法接受一个可导航集合,并返回一个不可修改的视图。
Collections.unmodifiableList(List<? extends T> list, List<T> copy)
这个方法允许你提供一个副本列表,如果原始列表发生变化,不可修改的视图将反映这些变化。
Collections.unmodifiableSet(Set<? extends T> s, Set<T> copy)
类似于上面的方法,但是用于集合(Set)。
Collections.unmodifiableMap(Map<K,V> m, Map<K,V> copy)
这个方法允许你提供一个副本映射,如果原始映射发生变化,不可修改的视图将反映这些变化。
List.of(T... elements)
这个方法是在Java 9中引入的,它接受可变参数,并返回一个固定大小的不可变列表。
Set.of(T... elements)
类似于上面的方法,但是用于集合(Set)。
Map.of(K key1, V value1, K key2, V value2, ...)
这个方法是在Java 9中引入的,它接受键值对,并返回一个固定大小的不可变映射。
List.ofAll(Collection<? extends T> collection)
这个方法是在Java 16中引入的,它接受一个集合并返回一个不可变的列表。
Set.ofAll(Collection<? extends T> collection)
类似于上面的方法,但是用于集合(Set)。
使用这些方法创建的不可变集合在多线程环境中也是安全的,因为它们不能被修改。此外,它们也可以作为常量值使用,因为它们的状态不会改变。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。