DocObject 유형의 객체가 있는데,이 객체 안에는 DocObject 객체가 포함되어 있습니다. 각각의 객체는 자식을 포함하거나 포함하지 않을 수 있습니다. replace()라는 이름의이 객체에 대한 함수를 작성하여 아이를 검색하고 DocObject에 그 아이가 포함되어 있으면 자식을 newObj로 대체해야합니다. 나는 사이트를 둘러 보았고 google을 검색했지만 아무 것도 보지 못했다.자바가 알 수없는 색인을 가진 arraylist의 객체를 대체합니다.
public void replace(DocObject oldObj, DocObject newObj) {
for (DocObject child : children) {
if (child == oldObj) {
child = newObj;
}
}
}
그리고 이것은 (이 오버 플로우 예외가 발생) : 아래의 코드는 내가 무엇을 시도했다 보여줍니다 그러나,
public void replace(DocObject oldObj, DocObject newObj) {
if (children.indexOf(oldObj) != -1)
children.set(children.indexOf(oldObj), newObj);
for (DocObject child : children)
child.replace(oldObj, newObj);
}
이 아이를 교체되지 않습니다, 나는보고 확인했다 if 문이 올바르게 작동하고 조건이 충족되었다는 것을 나타냅니다. oldObj를 newObj로 대체하려면 어떻게해야합니까?
왜 루프가 필요합니까? 'List # indexOf'를 직접 사용할 수없는 이유는 무엇입니까? 'while (children.indexOf (oldObj)! = -1) {...}' – MadProgrammer