Java中列表List的可变性和不变性
内容提要
Java代码示例了List的可变和不可变两种实现方式,包括ArrayList、LinkedList、CopyOnWriteArrayList、Arrays.asList()、Collections.emptyList()、Collections.singletonList()、Collections.unmodifiableList()、List.of()、List.copyOf()、Stream.toList()和Stream.collect(Collectors.toUnmodifiableList())。每种实现方式都有其特点和适用场景。
关键要点
-
Java代码示例了List的可变和不可变两种实现方式。
-
可变实现包括ArrayList、LinkedList和CopyOnWriteArrayList。
-
Arrays.asList()返回一个可变但不可增长的List实现。
-
Collections.synchronizedList返回一个有条件线程安全的List实例。
-
Stream.collect(Collectors.toList())返回一个可变的List。
-
不可变实现包括Collections.emptyList()、Collections.singletonList()、Collections.unmodifiableList()、List.of()、List.copyOf()、Stream.toList()和Stream.collect(Collectors.toUnmodifiableList())。
-
Collections.emptyList()返回不可变的空List。
-
Collections.singletonList()返回不可变的单例List。
-
Collections.unmodifiableList()返回List的不可修改视图。
-
List.of()返回不可变的List。
-
List.copyOf()复制另一个List的内容并返回不可变的List。
-
Stream.toList()返回不可变的List。
-
Stream.collect(Collectors.toUnmodifiableList())返回不可修改的List。