当前位置: 首页 > web >正文

java判断一个字符串(如 str1)是否在给定的一组字符串

在 Java 中,有几种简洁的方式可以判断一个字符串(如 str1)是否在给定的一组字符串(如 str2, str3, str4)中:

1️⃣ ​直接使用 || 逻辑运算符​(适用于少量固定字符串)

if (str1.equals(str2) || str1.equals(str3) || str1.equals(str4)) {// str1 存在于 str2/str3/str4 中
}

2️⃣ ​使用 Set 集合​(推荐,代码简洁且效率高)

Set<String> set = new HashSet<>(Arrays.asList(str2, str3, str4));
if (set.contains(str1)) {// str1 存在于集合中
}

3️⃣ ​使用 Apache Commons Lang 工具类​(需第三方库)

import org.apache.commons.lang3.StringUtils;if (StringUtils.equalsAny(str1, str2, str3, str4)) {// str1 存在于任意字符串中
}

4️⃣ ​使用 Stream API​(Java 8+)

boolean exists = Stream.of(str2, str3, str4).anyMatch(str1::equals);
if (exists) {// str1 存在于集合中
}

5️⃣ ​自建工具函数​(灵活复用)

public class StringUtils {public static boolean isIn(String target, String... options) {for (String option : options) {if (java.util.Objects.equals(target, option)) {return true;}}return false;}
}// 使用示例
if (StringUtils.isIn(str1, str2, str3, str4)) {// str1 存在于其中
}

🔍 关键说明:

  1. 空值安全​:建议使用 Objects.equals(a, b) 代替 a.equals(b),可安全处理 null 值(避免 NPE)。
  2. 效率考量​:
    • 少量固定值:直接用 || 最快
    • 动态值/大量值:HashSet 的 O(1) 复杂度更优
  3. 依赖推荐​:
    • 若项目中已有 Apache Commons Lang,推荐 StringUtils.equalsAny()
    • 纯 JDK 方案:Set 或 Stream 最佳

🛠️ Objects.equals() 处理 null 的示例:

import java.util.Objects;String str1 = null;
String str2 = "hello";// 安全比较
if (Objects.equals(str1, str2)) { System.out.println("Equal with null safety!");
}

选择方法时需根据场景(字符串数量、代码复用性、项目依赖)灵活选用。

http://www.xdnf.cn/news/12090.html

相关文章:

  • Python×AI:用LangChain快速搭建LLM应用的全栈方案
  • Vite实战指南
  • Linux容器篇、第一章_02Rocky9.5 系统下 Docker 的持久化操作与 Dockerfile 指令详解
  • SD卡通过读取bin文件替代读取图片格式文件来提高LCD显示速度
  • 半导体制冷片(Thermoelectric Cooler,TEC)
  • 深度学习Sitemap(NuxtSeo)
  • 《Offer来了:Java面试核心知识点精讲》大纲
  • 使用Prometheus实现微服务架构的全面监控
  • 慢SQL调优(二):大表查询
  • (四)docker命令—容器管理命令
  • 在 Spring Boot 中使用 WebFilter:实现请求拦截、日志记录、跨域处理等通用逻辑!
  • 嵌入式学习笔记 - freeRTOS的两种临界禁止
  • 改进社区检测和检索策略大幅提升GraphRAG性能新框架-ArchRAG
  • 策略公开了:年化494%,夏普比率5.86,最大回撤7% | 大模型查询akshare,附代码
  • 从 CLIP 和 Qwen2.5-VL 入门多模态技术
  • 2025Mybatis最新教程(三)
  • fmod产生的误差应该如何解决?
  • 日志项目——日志系统框架设计
  • 卡特兰数简单介绍
  • C++初阶 | 模板
  • C#中的依赖注入Dependency Injection, DI
  • AI 如何改变软件文档生产方式?
  • 图解浏览器多进程渲染:从DNS到GPU合成的完整旅程
  • JavaScript学习笔记(五)
  • 数据预处理的几种形式(转载)
  • 如何从零开始建设一个网站?
  • 卫星在轨姿态控制技术详解:从自旋稳定到高精度闭环控制
  • Redis中的setIfAbsent方法和execute
  • #开发环境篇:postMan可以正常调通,但是浏览器里面一直报403
  • python打卡day44@浙大疏锦行