因为需要我自己写了一个类用于存放数据,类的定义如下:
public class testObj  {
private int id;

public void setid(int intid)
{
this.id = intid;
}

public int getid()
{
return id;
}
}之后我将对象逐个压入Vector中,操作程序如下:
import java.util.*;public class testList {
private static Vector List;
private static testObj to; public static void main(String[] args) {
List = new Vector();
to = new testObj();
for (int i=0;i<10;i++)
{
to.setid(i);
List.add(to);
}

for (int j=0;j<10;j++)
{
to = (testObj)List.get(j);
System.out.println(to.getid());

}
}
}
但是输出的结果不像我预计的那个样子,输入结果如下:
9
9
9
9
9
9
9
9
9
9
我想问为什么会这个样子,如何解决,如何用队列或者堆栈存储数据对象,谢谢!

解决方案 »

  1.   

    把to = new testObj();移到循环里面for (int i=0;i<10;i++)
    {
    to = new testObj();
    to.setid(i);
    List.add(to);
    }
      

  2.   

    你就new一个,然后不停的存,把前面存的覆盖了,最后就只有最后存的那个了
      

  3.   

    楼上几位说得对,你的vector里每一项存放的是指向to这个类实例的地址,你不停的变化to的id值,但to还是to,所以最后只保留了to的最后一个值
      

  4.   

    压入vector中的类并不是to的拷贝,而是to的地址引用,它和to都指向了同样的目标,所以在压入to类后,如果to类改变,vector中的引用当然也就跟着改变了,像楼上几位说的那样,每次List.add();前都new testObj()一个新的变量再setid(int intid)就可以了。
      

  5.   

    问一下,testObj是什么东东???类一般不是都是大写开头的吗????
      

  6.   

    把to = new testObj();移到循环里面for (int i=0;i<10;i++)
    {
    to = new testObj();//注意
    to.setid(i);
    List.add(to);
    }呵呵,楼主犯了一个错误哦。
      

  7.   

    You should review the concepts of Object and Class