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

Java如何不使用For循环获取值List包含指定String的Map对应键集合

实现方案

你可以直接使用Java 8及以上版本提供的Stream流式API完成需求,不需要编写显式的for循环代码。

适配Map<String, List<String>>场景的代码

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

private Set<String> keysForValue(Map<String, List<String>> map, String targetValue) {
    return map.entrySet()
            .stream()
            // 过滤出值List包含目标字符串的条目
            .filter(entry -> entry.getValue().contains(targetValue))
            // 提取对应键
            .map(Map.Entry::getKey)
            // 收集为Set返回
            .collect(Collectors.toSet());
}

原有Map<Integer, Set<Integer>>版本修改后代码

import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

private Set<Integer> keysForValue(Map<Integer, Set<Integer>> map, Integer value) {
    return map.entrySet()
            .stream()
            .filter(entry -> entry.getValue().contains(value))
            .map(Map.Entry::getKey)
            .collect(Collectors.toSet());
}

说明

  • 整个实现没有显式的for/while循环逻辑,迭代操作由Stream框架内部完成,符合要求
  • 仅支持Java 8及更高版本使用,需要额外导入java.util.stream.Collectors类

内容的提问来源于stack exchange,提问作者KMJ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:24:03