У меня возникла проблема, когда я попытался добавить вектор 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<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
o, вы его очищаете, вы делаете это на добавленном 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]]