使用 Collections 工具类有哪些注意点?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
先确认方法是修改原集合、返回视图,还是创建新结果,再检查输入条件。排序和反转会改列表;unmodifiableList 返回不可修改视图,不隔离原列表变化;synchronizedList 保护单次调用,遍历还需遵守同步规则。只读、快照与线程安全是不同要求。
讲清原理
Collections 的名字不能说明返回值是否独立。把原列表包成不可修改视图,相当于收走这条访问路径的写按钮,底层仍是原来的数据。调用方若持有原列表,仍可改变视图看到的内容。
排序、shuffle、reverse 要求输入支持相应修改;二分查找要求事先有序且比较规则一致。包装器可以叠加,但叠加前要说明想保护哪种约束,并避免把底层可变对象继续泄露出去。
例子与易错点
Java 21 的 main 片段:
var source = new java.util.ArrayList<>(java.util.List.of("A"));
var view = java.util.Collections.unmodifiableList(source);
var copy = java.util.List.copyOf(source);
source.add("B");
System.out.println(view);
System.out.println(copy);
输出 [A, B]、[A]。copy 隔离列表结构变化,但元素对象仍可能共享。synchronizedList 的迭代要在返回的包装器上加锁,并保证所有访问都经同一同步策略。
相关题:第 8 题、第 34 题、第 39 题、第 46 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。