Java如何统计字符串数组中包含指定子串的元素总个数
Java统计字符串数组中包含指定子串的元素个数
核心逻辑
你之前只能匹配完全相等元素是因为使用了equals()做全等判断,替换为String类自带的contains(CharSequence s)方法即可实现子串包含判断,该方法只要字符串任意位置存在目标子串就返回true。
实现方式
1. 普通循环实现(兼容所有Java版本)
public class SubstringCounter { public static int countContainsSubstring(String[] inputArray, String targetSubstring) { // 空校验,避免空指针异常 if (inputArray == null || inputArray.length == 0 || targetSubstring == null) { return 0; } int count = 0; for (String item : inputArray) { // 跳过数组中的空元素,匹配包含子串的元素 if (item != null && item.contains(targetSubstring)) { count++; } } return count; } public static void main(String[] args) { // 测试用例 String[] testArray = {"the", "and", "land", "wander", "dreams"}; String target = "and"; System.out.println(countContainsSubstring(testArray, target)); // 输出结果为3 } }
2. Stream流式实现(适用于Java 8及以上版本)
代码更简洁,函数式风格实现:
import java.util.Arrays; public class SubstringCounter { public static long countContainsSubstring(String[] inputArray, String targetSubstring) { return Arrays.stream(inputArray) .filter(item -> item != null) .filter(item -> item.contains(targetSubstring)) .count(); } public static void main(String[] args) { String[] testArray = {"the", "and", "land", "wander", "dreams"}; String target = "and"; System.out.println(countContainsSubstring(testArray, target)); // 输出结果为3 } }
注意事项
contains()方法默认大小写敏感,如需忽略大小写匹配,可将判断逻辑修改为item.toLowerCase().contains(targetSubstring.toLowerCase())- 示例中加入了空指针校验逻辑,避免数组为空、子串为空、数组元素为null时抛出异常
内容的提问来源于stack exchange,提问作者zoe
相关产品推荐
相关产品推荐

