往Vector,ArrayList添加多个对象会被覆盖

在尝试向Vector和ArrayList添加多个对象时,发现所有元素与最后一个元素相同。原因是对象生命周期问题,未创建新对象而直接修改属性导致赋值覆盖。解决方案是将对象的创建置于循环内部,确保每个迭代都有新的对象实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在往Vector,ArrayList中添加多个对象的时候发现Vector,ArrayList中的所有元素和最后一个元素相同。本来是在刷一道ACM,遇到这个问题烦了我一天,测试了半天最后终于发现了原因。

如下代码:

//在for循环外面新建一个对象
_privilege prv1 = new _privilege();
for (i = 0; i < p; i++) {
    str = sc.next();
    prv1.category = str;
    prv1.level = i;
    m.privilege.add(prv1);//添加对象
}

这个时候会出现所有元素都重复的情况。
改一下就对了:

for (i = 0; i < p; i++) {
    //在for循环里面新建对象
    _privilege prv1 = new _privilege();
    str = sc.next();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值