java - 有没有办法用 forEach 将值分配到数组中?
问题描述
我对编程很陌生,并且学习了 Java 中的 forEach 循环。据我所知,它是经典 for 循环的较短版本。我的问题是,如何使用 forEach 将值保存到数组中还是只读的?
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = i;
}
for (int i : arr) {
arr[i] = i;
}
但我的数组是 [0,0,0,0,0]。(当然是,但我可以修改它吗?)
如果没有,还有其他方法可以代替正常的 for 循环吗?
解决方案
简短的回答:不,没有办法。
更长的答案:使用 for-each 循环,您会丢失索引信息,即在循环中您不知道您是在处理第一个、第二个还是第 100 个元素。您需要索引来处理数组中要写入的位置。因此,仅使用 for-each 是没有办法的。
注意:在您的示例中,第一个循环只是用它们的索引覆盖数组的元素。你会得到
arr = { 0, 1, 2, 3, 4 }
. 第二个循环只起作用,因为它遍历一个数组,其元素是它们自己的索引,就像你之前定义的那样。例如,如果您的数组是 `arr = { 42, 101, -73, 0, 5 }',第一次迭代将尝试访问只有五个元素的数组的第 43 个元素,从而导致异常。
您可以创建和增加自己的索引计数器,但这实际上是传统的 for 循环以非常方便的方式所做的事情。
常规 for 循环:
for (int index = 0; index < arr.length; index++) {
var element = array[index];
use(element);
}
每个循环:
for (int element : arr) {
// the current index is unknown here
use(element);
}
推荐阅读
- android - SciChart如何在Android上为{textAlignment:left}属性设置setAxisTickLabelStyle?
- jquery - 在 Fancybox 3 中将值从按钮传递到模式
- asynchronous - SwiftUI 在多个视图上使用环境对象会导致导航问题
- angular - ag-grid中的ValueGetters,未按预期过滤
- java - 如何使 JHipster JDL Import 跳过重新生成现有实体
- azure - Azure 函数发布 url 无法访问
- reporting-services - 鼠标悬停在 SSRS 报告中以更改颜色
- swift - 为什么不透明度为 0.0 的 SwiftUI Rectangle 在透明的 NSWindow 上呈现灰色矩形?
- python - Pyinstaller .exe 文件未打开其中包含 Face_recognition 模块。(在.py中工作)
- javascript - CSVto json 客户端