원본 코드에서 노드를 트리에 추가하고 있습니다. 내 목표는 어떻게 든 트리에 추가 한 마지막 노드에 대한 액세스 권한을 얻는 것입니다. 내 아이디어는 마지막 객체 (원래 예제의 노드)를 가리키는 다른 객체를 만드는 것입니다.Class에있는 객체의 주소를 인수로 복사하여 나중에 객체를 변경할 수 있습니다.
public class RandomSubClass
{
int firstNum;
}
는
public class Main
{
public static void main(String[] args)
{
RandomClass myList = new RandomClass();
RandomSubClass r1 = new RandomSubClass();
RandomSubClass r2 = new RandomSubClass();
myList.addItem(1, r1);
myList.addItem(2, r2);
// I would like to do that, and see changes in the node in 'myList'
//
r1.firstNum = 10;
r2.firstNum = 20;
}
}
import java.util.LinkedList;
public class RandomClass
{
LinkedList<RandomSubClass> myListOfObjects = new LinkedList<RandomSubClass>();
void addItem(int firstNum, RandomSubClass toBeReturned)
{
RandomSubClass o1 = new RandomSubClass();
o1.firstNum = firstNum;
myListOfObjects.add(o1);
// Here I was thinking that 'toBeReturned' will get same address as
// 'o1', and by changing 'toBeReturned' (in main), values in 'o1' change
//
toBeReturned = o1;
// This following commented code worked,
// but I can't use it in my original code.
//
// The reason I can't use it is because when I add a node to a tree,
// I start at the root and trace the new node's way to a new leaf,
// which makes it hard to do (simply) that.
//
//toBeReturned.firstNum = firstNum;
//myListOfObjects.add(toBeReturned);
}
}
나는 트리에 추가 한 후 노드에 대해 뭔가를 확인하려면, 그것은 몇 가지 조건을 만족하는 경우, 그에 대한 플래그를 변경하려면 마디.
노드를 다시 추적 할 수 있지만 (루트에서 시작) 내 트리가 어느 정도 커질 수 있으며 시간이 오래 걸릴 수 있습니다. 따라서 노드를 추가 할 때 해당 노드의 주소를 얻고 조건을 확인한 후 해당 노드의 플래그가 변경 될 것임을 알면서 해당 주소의 플래그를 수정할 수 있습니다 (마지막으로 추가됨).
고맙습니다. 이 방법을 시도하고 작동했지만 노드가 성공적으로 삽입되었는지 여부를 나타내는 부울 플래그를 반환하고 있습니다. 이것이 좋은 접근법이라면, 나는'RandomSubClass'를 반환 할 수 있고, 노드가 성공적으로 추가되었는지 아닌지를 나타 내기 위해 참조로 부울 플래그를 전달할 수 있습니다! –
@RoronoaZoro 나는 단지 실패를 나타내는 방법에서'거짓 '을 반환하는 것은 아주 좋은 접근 방법이 아니라고 말하고 싶습니다.Java 라이브러리에는 이러한 메소드가 몇 가지 있지만, 그렇게하면 다른 것을 반환하는 옵션이 없어집니다. 최선의 해결책은 실패를 나타내는 예외를 사용하는 것입니다. 'Exception'을 확장 한 클래스를 작성한 다음,'RandomSubClass addItem (int firstNum) throws ItemAdditionFailedException' 또는 그와 비슷한 것을 작성하십시오. – MarioDS
나는 나무에 고유 한 노드를 추가하고 있는데, '성공적으로 추가되었습니다'라는 의미는 동일한 값을 가진 노드가 없으므로 트리가 변경된 것입니다. 나중에이 값을 사용하여 더 많은 작업을 수행 할 것입니다. 나는이 상황에서 예외를 사용할 수 있다고 생각하지 않는다. 내가 틀렸다면, 또는 내 상황에 대해 좋은 또 다른 방법이 있다면. –