我正在做 freecodecamp 初學者教程,但 Arraylist 中的 forEach 函式有問題。以下代碼
number1.forEach(number -> {
number1.set(number1.indexOf(number), number * 2);
});
System.out.println(number1);
值是 [2, 4, 11, 12] 所以我希望得到 [4, 8, 22, 24] 但我得到 [8, 4, 22, 24]
任何想法有什么問題?
如上所述。我嘗試使用 indexOf 檢查值和索引是否未切換,因為我之前使用了 Sort 功能,但它們似乎沒問題。除此之外,一切都順利而輕松。身份證
uj5u.com熱心網友回復:
你從[2, 4, 11, 12]
在第一次迭代中,number = 2
然后你打電話number1.set(number1.indexOf(2), 2 * 2)
我們現在有[4, 4, 11, 12]
在第二次迭代中,number = 4
我們再次呼叫number1.set(number1.indexOf(4), 4 * 2)
這就是問題所在:indexOf 回傳該值的第一個實體的索引!
所以, number1.indexOf(4) = 0, 所以它8放入索引0而不是索引1
正如評論中提到的@Tibrogargan,這是一個很好的例子,說明為什么在迭代陣列時不應該修改它
只要存在一個數字,您的代碼number1將不起作用,因此存在一個數字Ynumber1XY = 2X
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/520688.html
標籤:爪哇循环前锋
上一篇:使用一些過濾器過濾嵌套的物件陣列
