ArrayList存储

dreaming_java 2007-08-23 05:09:07
Tea tea=new Tea();
ArrayList b = new ArrayList();
tea.setA(2);
b.add(tea);
tea.setA(5);
b.add(tea);

这样后 b.get(1), b.get(2) 一样  怎么解决使得他们不一样??
Tea 类
class Tea{
private int a;

public int getA() {
return a;
}

public void setA(int a) {
this.a = a;
}
}
...全文
406 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Remondy 2007-08-25
  • 打赏
  • 举报
回复
-》wuhaozhiyuan(飘)
讲得不错 ,呵呵
lsj19830812 2007-08-24
  • 打赏
  • 举报
回复
你添加的是同一个对象的引用,所以add的都是同一个对象,里面
的内容是最后一个set的值
所以每次应该重新new一个对象才对
joejoe1991 2007-08-24
  • 打赏
  • 举报
回复
新建一个对象存进去
koo7758258 2007-08-24
  • 打赏
  • 举报
回复
楼主还是没弄清原理
dreaming_java 2007-08-24
  • 打赏
  • 举报
回复
理解了
重新建对象给tea嘛

 不过我是这样
b.add(new Tea(...));

一样OK
hnrpc 2007-08-24
  • 打赏
  • 举报
回复
看样子楼主还是没真正的理解为什么会这样,哈哈
dreaming_java 2007-08-24
  • 打赏
  • 举报
回复
问题解决了 ..

奇怪

原来 是这样.
tea=new Tea();
tea=new Tea();
tea=new Tea();
tea=new Tea();
这样不会出错 ..
liky5387 2007-08-24
  • 打赏
  • 举报
回复
Tea tea = null;
ArrayList b = new ArrayList();
for (int i = 0; i < 10; i++) {
tea = new Tea();
tea.setA(i);
b.add(tea);
}
要想保存着那一次的值,我们只要重新给它开发一块内存空间.只有一块内存空间的话,每次SET值的时候,前一次的值会被覆盖掉.
wuhaozhiyuan 2007-08-24
  • 打赏
  • 举报
回复
在ArrayList中存对象,存的是他们的引用.
象你那样做只是在把同一个引用存到ArrayList里,
所以得到的是一样的内容
rorey_008 2007-08-24
  • 打赏
  • 举报
回复
你这样出来的内容肯定一样,建议你还是做个循环,每一次循环都实例化一个对象
hnrpc 2007-08-23
  • 打赏
  • 举报
回复
看了真是无语呢,这样的问题
Tea tea=new Tea();
ArrayList b = new ArrayList();
tea.setA(2);
b.add(tea);
tea.setA(5);
b.add(tea);

这样后 b.get(1), b.get(2) 一样  怎么解决使得他们不一样??
我靠这样出来肯定是同一内容了

b.get(0),b.get(1) 都是引用到一个实例中,而这个实A的值就是5 也许用C++中的指针来解说更容易理解一些
lanseliuying 2007-08-23
  • 打赏
  • 举报
回复
对呀,多了你就把创建对象放在循环里面,每循环一次都可以创建不就行了
dracularking 2007-08-23
  • 打赏
  • 举报
回复
每加一次,重新建一个Tea()对象
dreaming_java 2007-08-23
  • 打赏
  • 举报
回复
问题是我要在一个循环里要不断的添加Tea对象
个数也不知道的.
So>>这是不行的
lanseliuying 2007-08-23
  • 打赏
  • 举报
回复
声明两个对象
Tea tea=new Tea();
Tea tea1=new Tea();
ArrayList b = new ArrayList();
tea.setA(2);
b.add(tea);
tea1.setA(5);
b.add(tea1);
就可以了
dreaming_java 2007-08-23
  • 打赏
  • 举报
回复
Tea tea=new Tea();
ArrayList b = new ArrayList();
tea.setA(2);
b.add(tea);
tea.setA(5);
b.add(tea);

这样后 b.get(0), b.get(1) 一样  怎么解决使得他们不一样??
Tea 类
class Tea{
private int a;

public int getA() {
return a;
}

public void setA(int a) {
this.a = a;
}
}

修改下掉b.get(1), b.get(2) ;
iamsangster 2007-08-23
  • 打赏
  • 举报
回复
也是一样的
zdjray 2007-08-23
  • 打赏
  • 举报
回复
不一样的
而且你应该用b.get(0), b.get(1)

62,623

社区成员

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

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