集合与 Stream
核心接口
Collection → List/Set/Queue;Map 独立层次。常用实现:ArrayList、HashMap、HashSet、LinkedHashMap、TreeMap(有序)、ConcurrentHashMap(并发读多写场景常用)。
选择要点
- 需要索引随机访问:
List(通常ArrayList)。 - 需要键值:
Map;线程安全需求勿默认Hashtable,优先考虑ConcurrentHashMap或外部同步策略。 - 不可变集合:JDK 9+
List.of、Map.of、Set.of;GuavaImmutable*在旧项目仍常见。
Stream
惰性流水线:filter/map/reduce/collect。终端操作触发计算。注意:
- 流一般一次性,重用须重新创建。
parallelStream()仅在可拆分、无副作用、且 profiling 证明收益时使用;默认串行更简单可预测。
相等与排序
equals/hashCode 契约;Tree* 依赖 Comparable 或 Comparator,与 equals 一致性问题需设计时考虑。