使用 Java 集合框架有哪些实践原则?
查看完整题解
参考回答
直接回答
先按业务语义选接口,再按访问方式选实现:有位置用 List,去重用 Set,按键找值用 Map,排队用 Queue。声明泛型,明确顺序、null、可修改性与并发要求;数据量可估计时合理预分配。性能优化应有测量依据,避免只背“哪个类更快”。
讲清原理
集合类型本身就是约束。用 Set 表达唯一成员,比用 List 后到处手动去重更清楚;用 Map 保存编号与对象的对应,比维护两个同下标列表更不容易错。对外返回内部可变集合会泄露修改入口,必要时返回副本或受控视图。
作为哈希键的对象应维持稳定判等规则。多个线程共享数据时,还要一起设计“读到哪一刻”和“哪些操作必须同时成功”,不能只换一个线程安全类就结束。
例子与易错点
Java 21 的 main 片段:
java.util.Map<String, Integer> counts =
java.util.HashMap.newHashMap(100);
counts.merge("java", 1, Integer::sum);
counts.merge("java", 1, Integer::sum);
System.out.println(counts.get("java"));
输出 2。newHashMap 接收预期映射数,避免把桶容量误当成可装元素数。这仍是普通 HashMap;merge 在此例中不提供跨线程原子保证。预分配过大还会占空间,并增加某些容器的遍历成本。
相关题:第 16 题、第 34 题、第 39 题、第 49 题。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。