You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现与addToList功能类似、支持自定义键的泛型addToMap方法

实现代码

import java.util.Map;
import java.util.Objects;
import java.util.function.Function;

public static <K, V> V addToMap(final V element, final Map<K, V> map, final Function<? super V, ? extends K> keyMapper) {
    Objects.requireNonNull(map);
    Objects.requireNonNull(keyMapper);

    if (Objects.nonNull(element)) {
        K key = keyMapper.apply(element);
        map.put(key, element);
    }
    return element;
}

说明

  • 泛型定义:K为Map的键类型,V为Map的值类型,与你传入的元素类型一致
  • 第三个参数Function<? super V, ? extends K> keyMapper就是你需要的键生成逻辑,支持传入lambda表达式或者方法引用,你提到的场景可以直接写addToMap(car, carMap, s -> s.getId())或者简化为方法引用形式addToMap(car, carMap, Car::getId),完全符合你的预期调用方式
  • 如果你不希望相同key覆盖Map中已有的旧值,可以将map.put(key, element)替换为map.putIfAbsent(key, element)即可

内容的提问来源于stack exchange,提问作者Girls are beautiful

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:27:00