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 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 存在于其中
}
🔍 关键说明:
- 空值安全:建议使用
Objects.equals(a, b)代替a.equals(b),可安全处理null值(避免 NPE)。 - 效率考量:
- 少量固定值:直接用
||最快 - 动态值/大量值:
HashSet的 O(1) 复杂度更优
- 少量固定值:直接用
- 依赖推荐:
- 若项目中已有 Apache Commons Lang,推荐
StringUtils.equalsAny() - 纯 JDK 方案:
Set或Stream最佳
- 若项目中已有 Apache Commons Lang,推荐
🛠️ 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!");
}
选择方法时需根据场景(字符串数量、代码复用性、项目依赖)灵活选用。

