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元素的值相同。