使用**不可变集合(Immutable Collection)**主要是为了提高代码的安全性、可读性和性能。下面从几个核心角度说明“为什么要用不可变集合”。
不可变集合一旦创建就不能修改,因此:
synchronizedList<String> list = List.of("a", "b", "c");
多个线程同时遍历 list 是安全的。
可变集合容易被误改,导致难以排查的 bug。
public List<String> getConfig() {
return Collections.unmodifiableList(internalList);
}
调用方无法修改内部数据,避免“外部改了内部状态”。
不可变集合表达明确意图:
“这个集合在这里就是固定的”
代码阅读者不需要猜测:
例如状态码、错误码、白名单:
Set<String> ALLOWED_TYPES = Set.of("jpg", "png", "gif");
清晰、安全、不会乱改。
不可变集合符合“无副作用”的原则:
List<Integer> doubled = list.stream()
.map(x -> x * 2)
.toList();
例如在返回集合时:
// 不好:每次都拷贝
return new ArrayList<>(internalList);
// 好:直接返回不可变视图
return List.copyOf(internalList);
方法签名+不可变集合 = 强约束:
“我给你的数据你只能看,不能改”
此时应使用可变集合(如 ArrayList、HashMap)。
不可变集合让数据“更安全、更清晰、更可靠”,是现代 Java 开发推荐的实践。
如果你愿意,我也可以对比 Java 中 List.of / Collections.unmodifiableList / ImmutableList(Guava) 的区别。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。