class Num{
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public class Main {
public static void main(String[] args) {
List<Num> list = new ArrayList<>();
Num num = new Num();
for (int i = 0; i < 5; i++) {
num.setNum(i);
list.add(num);
}
list.stream().forEach(a -> System.out.println(a.getNum()));
}
}
解决办法
public class Main {
public static void main(String[] args) {
List<Num> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Num num = new Num();
num.setNum(i);
list.add(num);
}
list.stream().forEach(a -> System.out.println(a.getNum()));
}
}
将遍历时要add的实体类放到循环内让它每次遍历是都实例化一次
当你从List访问时,因为地址是相同的,所以这几个List元素的值相同。
文章讲述了在Java编程中,由于在循环外实例化对象导致List中的所有元素引用相同对象的问题。修复方法是在循环内部实例化对象,确保每次添加到List的是独立的实例,从而避免值相同的情况。
2529

被折叠的 条评论
为什么被折叠?



