1

ベクトルのベクトルにいくつかのベクトルを入れたいです。これをループで実行すると、最後に追加されたベクトルだけが追加されますが、追加したいベクトルの数と同じくらい頻繁に追加されます。

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]

4

1 に答える 1

3

Vector row、への参照のみを保持しt、その要素をコピーしません。外に出るtと、の内容に影響を与えますrow

t.clear()useを使用t = new Vector()して新しいオブジェクトを作成し、に追加されたものに影響を与えない代わりにrows

于 2012-12-12T01:44:07.587 に答える