JavaMapAPI新增了哪些方法

wen java案例 2

本文目录导读:

JavaMapAPI新增了哪些方法

  1. Java 8 (2014年) - 新增最多
  2. Java 9 (2017年) - 静态工厂方法
  3. Java 10 (2018年) - 无Map直接新增,但支持copyOf
  4. Java 11 (2018年) - 无Map方法新增
  5. Java 12-15 (2019-2020年) - 无Map方法新增
  6. Java 16 (2021年) - 新增 toList 在 Stream 中,Map 无变化
  7. Java 17 (2021年) - 无Map方法新增(LTS版本)
  8. Java 21 (2023年) - 新增顺序Map相关方法
  9. 常用方法示例

截至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支持。

抱歉,评论功能暂时关闭!