我想在矢量矢量中放入一些矢量。我在一个循环中执行此操作,最后只有最后添加的向量,但与我想要添加的向量的数量一样频繁。
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]
答案 0 :(得分:3)
Vector
row
仅保留对t
的引用,但不会复制其元素。当您在外面更改t
时,您正在影响row
的内容。
而不是使用t.clear()
使用t = new Vector()
来创建新对象,而不会影响已添加到rows
的内容。