我有一个DocObject类型的对象,其中包含一个DocObject的数组列表,其中每个子对象都可以包含或不包含子对象。我正在为此对象编写一个名为replace()的函数,该函数接受要搜索的子项,并且如果DocObject包含该子项,则应该用newObj替换该子项。我浏览过网站并搜索了谷歌,但没有看到任何工作。下面的代码显示了我试过:Java替换列表中具有未知索引的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语句正常工作并且符合条件。我如何用newObj替换oldObj?
为什么你需要循环开始?为什么不能直接使用'List#indexOf'?可以使用'while(children.indexOf(oldObj)!= -1){...}' – MadProgrammer