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

Java中不使用OR运算符判断字符串包含多个指定值的优化实现

优化方案

核心优化点

  • 抽离重复逻辑:原代码两个分支仅state取值不同,插入、对象构建逻辑完全一致,先确定state值再统一执行后续操作,消除冗余代码
  • 匹配关键词抽为常量集合:避免硬编码的冗长判断条件,后续增删忽略关键词只要修改集合即可,维护成本更低
  • 用Stream流的anyMatch方法简化匹配逻辑,可读性更高

优化后代码

// 忽略关键词抽为类静态常量,Java 9+ 用Set.of,Java 8可替换为Arrays.asList
private static final Set<String> IGNORE_KEYWORDS = Set.of("word", "different word", "phrase", "different phrase");

// 业务逻辑部分
// 提前取出title,避免重复调用getTitle,也可提前加空值处理防止空指针
String title = record.getTitle();
State targetState = IGNORE_KEYWORDS.stream().anyMatch(title::contains) ? State.IGNORE : State.NEW;

int id = dao.insert(nv);
nvRecord = NV.builder()
        .from(nv)
        .setId(id)
        .setState(targetState)
        .build();

可选扩展

  • 若需要忽略大小写匹配,将匹配逻辑改为keyword -> title.toLowerCase().contains(keyword.toLowerCase())
  • 若title可能为null,提前加空值处理:String title = Optional.ofNullable(record.getTitle()).orElse("");
  • 若关键词量级很大(超100个),可引入AC自动机优化匹配效率,普通业务场景上述写法性能完全够用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:18:04