java - 使用增强型 for 循环时的 IndexOutOfBoundsException

标签 java for-loop

当我尝试运行此命令时,我的增强型 for 循环返回 IndexOutOfBoundsException:

public static ArrayList<Double> multipliser(ArrayList<Double> listen, int multi) {

    for(double elementer : listen) {
        listen.set((int) elementer, listen.get((int) elementer * multi)); 
    }
    return listen;

它与一个好的旧 for 循环完美配合:

for(int i = 0; i < listen.size(); i++) {
    listen.set(i, listen.get(i) * multi);
}
return listen;

我错过了什么?

最佳答案

listen.get((int) elementer * multi)

不同
listen.get(i)*multi

集合中也是如此。

但是将列表中的所有内容乘以就地常量(在 Java 8+ 中)的更简单方法是:

listen.replaceAll(x -> x * multi);

Java 8 之前的最简单方法是使用 ListIterator:

for (ListIterator<Double> it = listen.listIterator(); it.hasNext();) {
  it.set(it.next() * multi);
}

(请注意,这大致是 Java 8+ 中 Collection.replaceAll 的默认实现的外观)。

关于java - 使用增强型 for 循环时的 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585888/

相关文章:

java - 为什么我会陷入 java 中的超长 for 循环?

java - 如何获取drawable中图片的照片名称?

java - GsonBuilder setDateFormat 为 "2011-10-26T20:29:59-07:00"

java - Android - 如何在服务重新启动时保留套接字连接

java - jobRepository 是否必须使用与 JdbcBatchItemWriter 相同的事务管理器?

python - 用数据框的行值替换子列表中的第二项

java - 分析工具如何在某些按钮单击或拍摄堆快照时执行垃圾收集?

javascript - for循环结束时执行某些操作

javascript - 为 for 循环添加时间延迟

r - 如何轻松地将多个向量组合成一个数据框?