You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:06:07