[英]Java add 1D vector to 2D vector
嘗試將1D向量添加到2D向量時遇到問題。
我寫了如下的特定代碼
Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector = new Vector<String>();
singleVector.add("a,a,a");
System.out.println(singleVector); // [a,a,a]
multiVector.add(singleVector);
System.out.println(multiVector); // [[a,a,a]]
singleVector.clear();
singleVector.add("b,b,b");
System.out.println(singleVector); // [b,b,b]
multiVector.add(singleVector);
System.out.println(multiVector); // [[b,b,b], [b,b,b]]
在最后一行,我希望是“ [[a,a,a],[b,b,b]]”,但結果是“ [[b,b,b],[b,b,b]]”
怎么了 ?
提前致謝。
在將singleVector
對象添加到multiVector
,您沒有在復制它。 因此,當您清除singleVector
並將其更改為“ b,b,b”時,您還將“更改”添加到multiVector
的(相同)對象。
如果要更改singleVector
而不修改multiVector
,則應該使用singleVector = new Vector<>()
而不是clear()
對其進行處理。
您使用了已經添加到multiVector中的相同Vector,並重新定義了其值。 如果您想添加一個新的,則必須編寫:
Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector = new Vector<String>();
singleVector.add("a,a,a");
System.out.println(singleVector); // [a,a,a]
multiVector.add(singleVector);
System.out.println(multiVector); // [[a,a,a]]
singleVector = new Vector<String>();
singleVector.add("b,b,b");
System.out.println(singleVector); // [b,b,b]
multiVector.add(singleVector);
System.out.println(multiVector); // [[a,a,a], [b,b,b]]
您所添加的對象本身,而不是價值,所以當你改變的值singleVector
啊,你清楚了,你在做它的multivector
添加一個!
您必須執行以下操作:
Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector1 = new Vector<String>();
Vector<String> singleVector2 = new Vector<String>();
singleVector1.add("a,a,a");
System.out.println(singleVector1); // [a,a,a]
multiVector.add(singleVector1);
System.out.println(multiVector); // [[a,a,a]]
singleVector2.add("b,b,b");
System.out.println(singleVector2); // [b,b,b]
multiVector.add(singleVector2);
System.out.println(multiVector); // [[a,a,a], [b,b,b]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.