本文目录导读:

- Java 8 (2014年) - 新增最多
- Java 9 (2017年) - 静态工厂方法
- Java 10 (2018年) - 无Map直接新增,但支持copyOf
- Java 11 (2018年) - 无Map方法新增
- Java 12-15 (2019-2020年) - 无Map方法新增
- Java 16 (2021年) - 新增 toList 在 Stream 中,Map 无变化
- Java 17 (2021年) - 无Map方法新增(LTS版本)
- Java 21 (2023年) - 新增顺序Map相关方法
- 常用方法示例
截至2025年5月,Java 8 到 Java 21 版本中,java.util.Map 接口新增了若干默认方法和静态方法,以下按版本梳理主要新增方法:
Java 8 (2014年) - 新增最多
// 1. 获取或默认值 V getOrDefault(Object key, V defaultValue) // 2. 遍历操作 void forEach(BiConsumer<? super K, ? super V> action) // 3. 替换操作 void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) V replace(K key, V value) boolean replace(K key, V oldValue, V newValue) // 4. 计算操作(原子性) V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) // 5. 合并操作 V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) // 6. 条件插入 V putIfAbsent(K key, V value) boolean remove(Object key, Object value)
Java 9 (2017年) - 静态工厂方法
// 不可变Map工厂方法 static <K, V> Map<K, V> of() static <K, V> Map<K, V> of(K k1, V v1) // ... 重载到10个键值对 static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, ..., K k10, V v10) // 任意数量键值对的不可变Map static <K, V> Map<K, V> ofEntries(Map.Entry<? extends K, ? extends V>... entries) // 创建 Map.Entry 的辅助方法 static <K, V> Map.Entry<K, V> entry(K k, V v)
Java 10 (2018年) - 无Map直接新增,但支持copyOf
// 在 Map 接口中(通过List/Set的copyOf模式,Map在Java 10没有直接新增)
Java 11 (2018年) - 无Map方法新增
Java 12-15 (2019-2020年) - 无Map方法新增
Java 16 (2021年) - 新增 toList 在 Stream 中,Map 无变化
Java 17 (2021年) - 无Map方法新增(LTS版本)
Java 21 (2023年) - 新增顺序Map相关方法
// 顺序Map接口(SequencedMap 作为子接口) // Map 接口本身未新增,但 LinkedHashMap 实现了 SequencedMap // SequencedMap 接口中的方法: V firstEntry() // 获取第一个entry V lastEntry() // 获取最后一个entry V pollFirstEntry() // 移除并返回第一个entry V pollLastEntry() // 移除并返回最后一个entry SequencedMap<K, V> reversed() // 返回逆序视图
常用方法示例
// Java 8 - computeIfAbsent(最常用之一)
Map<String, List<Integer>> map = new HashMap<>();
map.computeIfAbsent("key", k -> new ArrayList<>()).add(1);
// Java 8 - merge
map.merge("count", 1, Integer::sum); // 计数+1
// Java 9 - 不可变Map
Map<String, Integer> immutable = Map.of("a", 1, "b", 2);
// Java 21 - 顺序操作(仅LinkedHashMap)
LinkedHashMap<String, Integer> orderedMap = new LinkedHashMap<>();
orderedMap.putFirst("a", 1); // 插入到开头
大多数实用的新增方法集中在 Java 8(计算、合并、默认值)和 Java 9(不可变Map工厂),后续版本主要是内部优化和顺序Map支持。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播