在 Java 中判断字符串数组是否包含特定字符串,有几种常见方法:
方法1:使用 Arrays.asList() 和 contains()
import java.util.Arrays;
String[] array = {"a", "b", "c"};
boolean containsA = Arrays.asList(array).contains("a");
System.out.println(containsA); // 输出 true
方法2:使用循环遍历
String[] array = {"a", "b", "c"};
boolean found = false;
for (String str : array) {
if ("a".equals(str)) {
found = true;
break;
}
}
System.out.println(found); // 输出 true
方法3:使用 Java 8+ Stream API
import java.util.Arrays;
String[] array = {"a", "b", "c"};
boolean containsA = Arrays.stream(array)
.anyMatch("a"::equals);
System.out.println(containsA); // 输出 true
方法4:完整示例(包含 null 安全处理)
import java.util.Arrays;
public class StringArrayCheck {
public static void main(String[] args) {
String[] array = {"apple", "banana", "a", "cherry"};
// 方法1:Arrays.asList
System.out.println("方法1: " + Arrays.asList(array).contains("a"));
// 方法2:传统循环
boolean found = false;
for (String s : array) {
if ("a".equals(s)) { // 使用 "a".equals(s) 避免 NPE
found = true;
break;
}
}
System.out.println("方法2: " + found);
// 方法3:Stream API
System.out.println("方法3: " +
Arrays.stream(array).anyMatch("a"::equals));
}
}
注意事项:
-
空指针安全 :使用
"a".equals(str)而不是str.equals("a"),避免 str 为 null 时抛出异常 -
性能考虑:
-
小数组:哪种方法差异不大
-
大数组:方法1(Arrays.asList)更高效
-
-
区分大小写:如果需要忽略大小写:
// 忽略大小写比较
String[] array = {"A", "b", "c"};
boolean containsA = Arrays.stream(array)
.anyMatch(s -> s != null && s.equalsIgnoreCase("a"));
System.out.println(containsA); // 输出 true
推荐用法:
-
大多数情况:方法1(简洁高效)
-
需要额外逻辑处理:方法3(Stream API)
-
老版本Java或简单场景:方法2(传统循环)
选择哪种方法取决于你的具体场景和Java版本。