你的例子中,使用的是 String 类型作为元素,因为 String 属于自身不可变的特殊引用类型,所以改变元素的值不会影响集合本身中的元素。但如果用普通引用类型(如自己创建一个对象)作为元素,就会发现会影响集合本身中的元素。
public class Demo {
public static void main(String args[]) {
List<MyObject> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(new MyObject(i));
}
System.out.println(list.toString());
Iterator<MyObject> iterator = list.iterator();
while (iterator.hasNext()) {
MyObject next = iterator.next();
next.num = 99;
}
System.out.println(list.toString());
}
}
class MyObject {
int num;
MyObject(int num) {
this.num = num;
}
@Override
public String toString() {
return String.valueOf(num);
}
}
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[99, 99, 99, 99, 99, 99, 99, 99, 99, 99]