ForEach循环的临时变量实际上只是定义了一个新的变量指向对象的引用,因此如果你希望更改对象的属性是可以的,看下面这个例子
LinkedList<User> users = new LinkedList<>();
users.add(new User("zhang"));
for (User user : users) {
user.setUsername("wang");
}
System.out.println(users);
运行结果
但在遍历时想直接替换整个对象是行不通的,赋值只能替换该变量的引用,而替换不了集合中的元素
LinkedList<User> users = new LinkedList<>();
users.add(new User("zhang"));
for (User user : users) {
user = new User("wang");
}
System.out.println(users);
请使用List.set()
代替