簡體   English   中英

Java將1D向量添加到2D向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM