如何获取Java数组中指定元素所有匹配项的索引值
问题原因
- 代码中的
break语句会在匹配到第一个符合条件的元素后直接终止循环,因此只能返回第一个匹配索引 - 循环条件
i <= hair.length存在数组越界风险:Java数组索引范围为0 ~ hair.length - 1,当i等于数组长度时访问hair[i]会抛出越界异常
修改方案
新增一个列表容器存储所有命中的索引,移除break语句,调整循环边界即可,修改后代码示例:
import java.util.ArrayList; import java.util.List; // 初始化列表存储所有匹配的索引 List<Integer> matchIndexes = new ArrayList<>(); // 修正循环判断条件 for (int i = 0; i < hair.length; i++) { if (hair[i].equalsIgnoreCase("long")) { // 匹配成功就把当前索引加入列表,继续遍历后续元素 matchIndexes.add(i); } }
运行后matchIndexes中就存储了所有匹配的索引值,你示例的hair数组运行后得到的结果为[1, 2]。如果需要输出逗号分隔的字符串格式,可以使用如下代码转换:
String result = String.join(",", matchIndexes.stream().map(String::valueOf).toList()); // 输出结果为 "1,2"
内容的提问来源于stack exchange,提问作者Pixomar Youtube
相关产品推荐
相关产品推荐

