2014-04-29 5 views
1

2D 벡터에 1D 벡터를 추가하려고 할 때 문제가 발생했습니다. 자바가 2D 벡터에 1D 벡터를 추가

은 내가 "[[A, A, [, B] B B A]"하지만 결과는 [ "이라고 예상, 마지막 줄에

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]] 

을 다음과 같은 특정 코드를 썼다 [b, b, b], [b, b, b]] "

무엇이 잘못 되었습니까?

미리 감사드립니다.

+1

당신이 모든 벡터 클래스를 사용하지 않아야합니다 유의하십시오. 레거시 수업입니다. –

답변

4

singleVector 개체를 multiVector에 추가 할 때 이 아니고 사본을 만들면됩니다. 따라서 singleVector을 지우고 "b, b, b"로 변경하면 multiVector에 추가 한 (동일한) 객체도 "변경"됩니다.

singleVector을 변경하지 않고 multiVector으로 변경하려면 clear() 대신 singleVector = new Vector<>()을 입력해야합니다.

+1

+1 매우 빨랐습니다! –

1

이미 multiVector에 추가 된 동일한 벡터를 사용하고 해당 값을 다시 정의했습니다. 당신이 O를 ​​singleVector의 값을 변경할 때 그래서 당신은 분명히, 당신이 그것을하고있다, 당신은 객체 자체가 아닌 값을 추가

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]] 
1

을 : 당신은 새로운 하나를 추가 할 경우 당신은 작성해야 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]]