将几个向量添加到向量向量不起作用,Java

时间:2012-12-12 01:38:16

标签: java vector

我想在矢量矢量中放入一些矢量。我在一个循环中执行此操作,最后只有最后添加的向量,但与我想要添加的向量的数量一样频繁。

public void initVectors() {

    rows = new Vector<Vector<String>>();
    Vector<String> data = new Vector<String>();

    Vector<String> t = new Vector<String>();
    String aLine;
    try {
        FileInputStream fin = new FileInputStream("module.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(fin));
        // extract data
        while ((aLine = br.readLine()) != null) {
            StringTokenizer st = new StringTokenizer(aLine, ",");
            t.clear();
            while (st.hasMoreTokens()) {
                t.addElement(st.nextToken());
                // System.out.println(st.nextToken());
            }

            System.out.println(t);
            System.out.println("add it");
            rows.addElement(t);

        }

        Enumeration vEnum = rows.elements();
        System.out.println("Elements in vector:");
        while (vEnum.hasMoreElements()) {
            System.out.print(vEnum.nextElement());
            System.out.println();
        }


        br.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

}

我的输出是:
[GDI 1,4,1.0]
加上它 [Physik,6,1.3]
加上它 向量中的元素:
[Physik,6,1.3]
[Physik,6,1.3]

1 个答案:

答案 0 :(得分:3)

Vector row仅保留对t的引用,但不会复制其元素。当您在外面更改t时,您正在影响row的内容。

而不是使用t.clear()使用t = new Vector()来创建新对象,而不会影响已添加到rows的内容。