如何在Vector of Vector Java中查找(打印)指定的字段

时间:2015-04-14 10:08:14

标签: java function vector add

我们必须打印此向量的指定索引,但我们无法使用正确的索引。

创建SetA后,所有元素都对应于最后一次插入,而不是指定的索引。

有没有办法在预先存在的向量的末尾添加Vector? 这样,“添加”功能不起作用!

    Vector <Vector <Integer>> setA = new Vector<Vector <Integer>>();
    Vector <Integer> temp = new Vector<Integer>();

    for(int i=0; i<=2;i++){
        temp.clear();

        for(int j=0; j<=4;j++){
            temp.add(i*j);
        }                   
        setA.add(temp);
        System.out.printf("\nVector Temp: "+temp.toString());
        System.out.printf("\nElement i="+i+" of setA: "+setA.get(i).toString()+"\n");
    }
    System.out.printf("\nNow I want to print the vector that correspond index i=1 of set");
    System.out.printf("\n"+setA.get(1).toString()+"\n\n");
}

2 个答案:

答案 0 :(得分:1)

问题是,你试图一次又一次地重复使用相同的Temp:

for(int i=0; i<=2;i++){
    temp.clear();

    for(int j=0; j<=4;j++){
        temp.add(i*j);
    }                   
 setA.add(temp);

所以当你开始时,你清除temp,添加四个元素并添加对vector setA的相同引用。现在当你循环下一次,即i = 1时,你从temp中删除所有元素,所以现在你的setA将在i = 0的位置包含一个空向量;

为避免这种情况,您应该使用:

 for(int i=0; i<=2;i++){
    temp = new Vector<Integer>();//initialize every time. Do you really need Vector or list will work?

    for(int j=0; j<=4;j++){
        temp.add(i*j);
    }                   
    setA.add(temp);//do you  really need vector within vector?

答案 1 :(得分:1)

每次循环都会向temp添加相同的引用。您希望每次都声明一个新实例。

for (int i = 0; i <= 2; i++) {
    Vector <Integer> temp = new Vector<Integer>();
    ...
}

此外,你应该使用List / ArrayList,因为Vector是遗留的。