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

如何快速检查字符串是否存在于List<Map<String, String>>集合中?

检查字符串是否存在于List<Map<String, String>>中的几种方法

嘿,针对你的需求,我给你整理了几种实用的方法,你可以根据自己的Java版本和习惯来选择:

方法一:Java 8+ Stream API(推荐)

这是最简洁高效的方式,利用Stream的anyMatch方法可以快速判断是否存在匹配项:

String targetName = "tim";
boolean exists = tempNameMapList.stream()
    // 先过滤掉可能没有"name"键或者值为null的Map,避免空指针异常
    .filter(map -> map.containsKey("name") && map.get("name") != null)
    .anyMatch(map -> targetName.equals(map.get("name")));

如果能保证每个Map里都一定有"name"键且值不为null,也可以简化成:

boolean exists = tempNameMapList.stream()
    .anyMatch(map -> targetName.equals(map.get("name")));

方法二:传统for循环(兼容所有Java版本)

如果你用的是Java 8之前的版本,或者更喜欢直观的循环写法,这种方式也很稳妥:

String targetName = "tim";
boolean exists = false;
for (Map<String, String> map : tempNameMapList) {
    String currentName = map.get("name");
    // 加上非空检查避免空指针
    if (currentName != null && targetName.equals(currentName)) {
        exists = true;
        break; // 找到匹配项就提前终止循环,提升效率
    }
}

小提示(频繁检查优化)

如果这个检查操作需要频繁执行,建议提前把所有name提取到一个HashSet里,这样后续每次检查的时间复杂度都是O(1):

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

Set<String> nameSet = tempNameMapList.stream()
    .map(map -> map.get("name"))
    .filter(Objects::nonNull)
    .collect(Collectors.toSet());

// 之后检查只需要一行代码
boolean exists = nameSet.contains(targetName);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:03:18