为什么set后填写0或者2输出的内容都会重复。​

为什么set后填写0或者2输出的内容都会重复。​

http://img1.sycdn.imooc.com//climg/5fd17a370995c03b09150750.jpg

http://img1.sycdn.imooc.com//climg/5fd17a200975383c09470729.jpg

http://img1.sycdn.imooc.com//climg/5fd17a4409a7303204470420.jpg


为什么set后填写0或者2输出的内容都会重复。​

在这里输入代码,可通过选择【代码语言】突出显示

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿园 2020-12-11 09:50:37

同学你好,可能是老师没有表达清楚,这里使用对象的set方法就会将对象的该属性进行修改,那么集合中的内容也会随之进行修改

而如果用ArrayList集合的set方法会将对应索引位置的对象也进行修改,所以如果索引为0,就会将集合中第一个对象修改成notice4,此时集合中就有两个notice4对象,从而导致输出的第一条和第二条信息是一致的;同理,索引处为2时,会将集合中的第三条数据进行修改,输出的第二条和第三条信息一致

http://img1.sycdn.imooc.com//climg/5fd2cd1c09b49ad114350219.jpg

问:为啥会修改掉,它为啥不是替换呢?

答:集合中第一条或者第三条的数据也进行修改,这里的修改指的就是当索引为0或者2时,notice4替换了第一条或者第三条数据

问:假如想改进一下改如何去改进?

答:如果同学只想修改某个对象的属性,直接使用对象的set方法即可,即本案例使用setTitle()即可

祝学习愉快


好帮手慕阿园 2020-12-10 13:50:39

同学你好,notice4.setTitle("imooc慕课网")将notice4对象的title设置为了imooc慕课网,如果在ArrayList的set方法中将索引的位置写上0或者2,就会将集合中第一条或者第三条的数据也进行修改;所以如果写0或者2输出的title内容会重复

祝学习愉快

  • 提问者 原子Q #1

    那个老师  我没明白的就是就是为啥会修改掉,它为啥不是替换呢?  假如想改进一下改如何去改进


    2020-12-10 19:15:18
  • 提问者 原子Q #2
    如上面代码  假如我noticeList.set中输入的数是0,那它输出的时候第一条和第二条内容都是“imooc学习网”,输入2的时候   第二和第三条内容是这样的
    2020-12-10 19:19:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师