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

获取ArrayList索引值存入另一个ArrayList结果不符预期,求解答

问题排查与修正

错误原因

你代码里的a.indexOf(i)逻辑完全错了——这个方法是在列表a里找数值等于i的元素的索引,不是拿当前循环的索引值。

  • 当i=0时,a里没有0,所以返回-1;
  • 当i=1时,a里的1在索引2的位置,返回2;
  • 当i=2时,a里的2在索引0的位置,返回0;
    这就是你得到[-1,2,0]的原因。

修正方案

要把循环的索引编号本身加到b里,直接添加循环变量i就行:

List<Integer> a = new ArrayList<>();
a.add(2);
a.add(5);
a.add(1);

List<Integer> b = new ArrayList<>();

for (int i = 0; i < a.size(); i++) {
    // 直接添加当前索引i,而不是调用indexOf
    b.add(i);
}

System.out.println("array b: " + b);

如果想用更简洁的方式,也可以用Java 8+的流:

List<Integer> b = IntStream.range(0, a.size())
                           .boxed()
                           .collect(Collectors.toList());

运行修正后的代码,就能得到预期的[0,1,2]。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:10:32