2016-11-05 2 views
0

제 질문은 자바를 사용하여 트리와 같은 콜렉션을 가질 수 있다는 것입니다. 트리의 노드를 변수에 저장하십시오. 현명한 동일한 객체 주소가 될 것입니다 (저의 이해에서) 그렇기 때문에 로컬 변수를 사용하는 노드의 데이터를 변경하면 컬렉션의 데이터도 변경됩니까?로컬 변수를 사용하여 컬렉션의 값을 변경하십시오.

+1

왜 테스트하지 않으시겠습니까? 하지만 네가 동일한 객체에 대한 두 개의 참조를 가지고 있다면 하나의 참조를 사용하여 고유 한 객체의 상태를 변경하면이 객체가 변경되고 다른 참조는 여전히 동일한 수정 된 객체를 가리 킵니다. –

답변

0

로컬 변수는 노드에 대한 참조를 보유하므로 로컬 변수의 데이터를 변경하면 실제로 참조하는 객체의 데이터가 변경됩니다.이 경우 동일한 객체이기 때문에 트리의 노드도 변경됩니다 . 대답은 좀입니다

안부

알렉스

0

. 변수가 var이고 그 주소가 컬렉션 things에 저장되어 있다고 가정합니다. 그런 다음 var = some_var과 같은 작업을 수행하면 콜렉션의 데이터가 변경되지 않습니다. 이는 할당에서 var의 주소를 덮어 쓰고 있기 때문입니다. 그러나 var를 어떻게 든 수정하려면 두 변수가 모두 변경됩니다. 이는 주소가 동일하게 유지되므로 올바른 메모리에 계속 쓰고 있기 때문에 발생합니다. 예 : var.field = some_datathings[var].field을 수정합니다.

이런 이유로 일반적으로 var 사본을 things에로드하는 것이 좋습니다. 이렇게하면 우연히 연결된 채로 두지 않습니다. 사람들은 종종 깨닫지 않고 이러한 것들을 연결하고, 컬렉션이 변경되었음을 알지 못하고 변수를 수정합니다.

관련 문제