【发布时间】:2014-09-17 20:44:28
【问题描述】:
所以我对 Java 迭代器/迭代器/迭代器的工作原理一无所知,而且每隔一段时间我都会犹豫如何做某事。这是其中之一。
我有一个对象列表,我需要更改每个对象。但由于我必须从字面上重置列表中的每个引用,我不确定如何执行此操作。我想出了这个实现,它绝对可以工作:
for (Object obj : new ArrayList<Object>(list)) {
list.remove(obj);
list.add(change(obj));
}
请注意,我不能只这样做:
for (Object obj : list) { change(obj) }
由于obj 的性质,我无法就地修改它。 Change() 返回一个已更改的新对象。
基本上,我是在问这样是否可以:
for (Object obj : list) {
obj = change(obj);
}
或者如果我必须使用顶级实现。
【问题讨论】:
-
只需创建一个新列表并用更改的对象填充它。迭代器不需要技巧。或者像 Paul Vargas 建议的那样使用 set 方法。
标签: java loops reference iteration