中易网

java基础问题,为什么最后List里面得到的都是最后一个值,而不是8个值呢?

答案:5  悬赏:0  
解决时间 2021-01-17 16:55
  • 提问者网友:骨子里的高雅
  • 2021-01-17 06:03
java基础问题,为什么最后List里面得到的都是最后一个值,而不是8个值呢?
最佳答案
  • 二级知识专家网友:行路难
  • 2021-01-17 06:42
public static void main(String[] args) {
        //创建一个 school类型的对象 引用名 sc
school sc = new school();
//创建一个List集合 引用名 list
List list = new ArrayList();
//循环执行8次,每次将 sc引用指向的对象 改变,那么此时要注意了.

for(int i=0;i<8;i++){
sc.setPwd("pwd"+i);
sc.setUsername("name"+i);
//将sc放入集合,sc引用指向的是一个对象,而List集合中保存的
//就是这个引用,你改变sc引用指向对象的值,那么当然sc
//由于他指向是同一个对象,保存的只是你最后一次更改的值.
list.add(sc);
}
//如果想改正, 请将school sc = new school();放入for循环即可
}
全部回答
  • 1楼网友:舊物识亽
  • 2021-01-17 08:49
。。。
school sc = new school(); 放在for循环外,只有一个school对象
在循环中操作的都是同一个对象,每一次的赋值都是对上一次的覆盖。
可以试试把school sc = new school();放到循环内
  • 2楼网友:天凉才是好个秋
  • 2021-01-17 08:18
你用的是ArrayList这个会帮你自动排序,不想让他帮你排序你要用HashLinkedList。
List<school> list = new LinkedList<school>();
  • 3楼网友:掌灯师
  • 2021-01-17 07:21
public static void main(String[] args) {
List<school> list = new ArrayList<school>();
for(int i=0;i<8;i++){
school sc = new school();//放在for循环里面,就是八个了,要不然listadd的都是同一个对象
sc.setPwd("pwd"+i);
sc.setUsername("name"+i);
list.add(sc);
}
}
  • 4楼网友:怙棘
  • 2021-01-17 06:55
因为 你的 sc是 一个对象,每次 放入 list 的 都是 sc 的引用, 每次 都被 改变,所以 里面放的 都是最后一次 改变后的 值,想要 每次 都不一样,就在 for 循环里面 每次 new 一个对象
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息