java - 这个传统的 for 循环与 for each 循环的等价物是什么

标签 java for-loop foreach

我在下面有一个 for 循环的传统,我只是想知道每个循环的等效循环是什么。

for (int i = 0; i < words.size(); i++)
{
    words.set(i, words.get(i).toUpperCase());
}

此外,对于那些想知道的人来说,words 是一个 String 类型的 arrayList。

最佳答案

for-each 结构不允许您设置元素。这是因为它提供的语法糖隐藏了 Iterator<E>完全。

for (String word : words)
 ...

相当于

for (Iterator<String> it = words.iterator(); it.hasNext(); /**/) {
  String word = it.next();
  ...
}

如果 String 这可能有效实例是可变对象,因此您可以在不修改引用的情况下修改内容,但事实并非如此。为了能够用 for-each 做你需要的事情,你需要一个包装类,例如:

List<AtomicReference<String>> words = ...;
for (AtomicReference<String> word : words)
  word.set(word.get().toUpperCase());

关于java - 这个传统的 for 循环与 for each 循环的等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864847/

相关文章:

python - 在列表中查找特定值的每三个实例

java - 无法在 foreach 中使用 hibernate 实体

powershell - 使用管道对象填充邮件收件人和附件

php - MySQL 在 php foreach 循环中仅插入几行

java - 我如何检查数组列表是否包含某个字符串

java - 在这种情况下如何使用迭代器?

java - 开始探索复杂的 java 项目

Java Web服务客户端:

java - for循环计算Java中的音节

excel - 将 Excel 函数转换为 R