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

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.lqws.cn/news/137917.html

相关文章:

  • el-table 树形数据,子行数据可以异步加载
  • Vue指令修饰符、v-bind对样式控制的增强、computed计算属性、watch监视器
  • Deepfashion2 数据集使用笔记
  • MyBatis-Plus LambdaQuery 高级用法:JSON 路径查询与条件拼接的全场景解析
  • sqli-labs靶场38-45关(堆叠注入)
  • 2025年五一数学建模竞赛A题-支路车流量推测问题详细建模与源代码编写(一)
  • fmod产生的误差应该如何解决?
  • Android studio初体验
  • yoloe优化:可支持点提示进行检测分割
  • AI系统提示词:Claude 4 Opus
  • 《PyTorch Hub:解锁深度学习模型的百宝箱》
  • Linux网络socket套接字(上)(2)
  • 【Linux】线程同步
  • 如何轻松地将文件从 PC 传输到 iPhone?
  • c++ STL 仿函数和适配器(算法常用)
  • 在树莓派上添加音频输入设备的几种方法
  • Deepin 安装 Nginx
  • 【JVM】Java类加载机制
  • fastadmin+workman环境搭建
  • Rust学习(1)
  • [Java 基础]枚举
  • Linux操作系统shell脚本
  • [Java 基础]面向对象-多态
  • 关于物联网的基础知识(一)
  • 职坐标IT教育物联网全栈开发实战:传感器到云平台全链路
  • ‌RF Choke(射频扼流圈)
  • 第十三节:第二部分:集合框架:Map系列集合:概述、常用方法
  • thymeleaf直接调用Spring Bean中定义的方法
  • Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解
  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)