关于ArrayList

sealove 2003-09-17 10:24:26
ArrayList body=new ArrayList();
head = new Point(200, 50);
body.add(head);
for (int i = 1; i <= 3; i++) {
body.add(new Point( (head.x - 10 * i), 50));
}
*************************************************
我想把body中的对象依此向后移一位,然后再把第一个对象中的x加10
for(int i=body.size()-1;i>0;i--){
body.set(i,body.get(i-1));
}
head.x=head.x+10;//head好象和body的第一个对象是同一个对象.

调试结果为:
****************body.size()=4
****************head=210******50
****************body[0]=210******50
****************body[1]=210******50
****************body[2]=190******50
****************body[3]=180******50
****************body.size()=4
****************head=220******50
****************body[0]=220******50
****************body[1]=220******50
****************body[2]=220******50
****************body[3]=190******50
我想要的结果是:
****************body.size()=4
****************head=210******50
****************body[0]=210******50
****************body[1]=200******50
****************body[2]=190******50
****************body[3]=180******50
****************body.size()=4
****************head=220******50
****************body[0]=220******50
****************body[1]=210******50
****************body[2]=200******50
****************body[3]=190******50
该怎么解决,,请高手指教.
...全文
13 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fast_time 2003-09-17
  • 打赏
  • 举报
回复
因为引用了同一个对象
whyxx 2003-09-17
  • 打赏
  • 举报
回复
稍微改一下就行了

for(int i=body.size()-1;i>0;i--){
Point temp = (Point) body.get(i - 1);
body.set(i,new Point(temp.x, temp.y));
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧