📜  不可修改集合的 API (1)

📅  最后修改于: 2023-12-03 14:48:49.891000             🧑  作者: Mango

不可修改集合的 API

在编程中,有时需要对一些数据进行集合操作,但是由于程序的需求或是程序设计的要求,有时需要保证这些数据不可修改。这时候,就需要使用不可修改集合(immutable collection)。

不可修改集合是指一旦被创建,集合中的数据就不能被修改,而只能读取。这种集合常用于多线程编程、缓存、数据持久化等场景。

在许多编程语言中,都提供了不可修改集合的 API。下面是一些常用的不可修改集合的 API。

List

在 Java 8 中,可以通过 Collections.unmodifiableList() 方法来创建不可修改的 List。

List<Integer> list = Arrays.asList(1, 2, 3);  
List<Integer> unmodifiableList = Collections.unmodifiableList(list);

在 Kotlin 中,则可以使用 Kotlin 标准库中提供的 List 接口的 asList() 方法来创建不可修改的 List。

val list = listOf(1, 2, 3)
val unmodifiableList = list.asList()
Set

在 Java 8 中,可以通过 Collections.unmodifiableSet() 方法来创建不可修改的 Set。

Set<Integer> set = new HashSet(Arrays.asList(1, 2, 3));  
Set<Integer> unmodifiableSet = Collections.unmodifiableSet(set);  

在 Kotlin 中,则可以使用 Kotlin 标准库中提供的 Set 接口的 setOf() 方法来创建不可修改的 Set。

val set = setOf(1, 2, 3)
val unmodifiableSet = set
Map

在 Java 8 中,可以通过 Collections.unmodifiableMap() 方法来创建不可修改的 Map。

Map<String, String> map = new HashMap<>();  
map.put("key1", "value1");  
map.put("key2", "value2");  
Map<String, String> unmodifiableMap = Collections.unmodifiableMap(map);  

在 Kotlin 中,则可以使用 Kotlin 标准库中提供的 Map 接口的 mapOf() 方法来创建不可修改的 Map。

val map = mapOf("key1" to "value1", "key2" to "value2")
val unmodifiableMap = map

需要注意的是,不可修改集合的 API 只能保证集合中的数据不被修改,但是并不能保证集合中的数据本身是不可变的。例如,通过不可修改集合创建的 List 中的元素依然是可变的,只是不能在当前集合中被修改。

参考文献
  1. Java 8 Collections.unmodifiableList() Method – Read Only List.
  2. Kotlin Standard Library - List.
  3. Java 8 Collections.unmodifiableSet() Method – Read Only Set.
  4. Kotlin Standard Library - Set.
  5. Java 8 Collections.unmodifiableMap() Method – Read Only Map.
  6. Kotlin Standard Library - Map.