Вам известны потоки Java? С потоками вы можете сделать что-то вроде:
List<Object> result = objects.stream()
.filter(object -> {/*add condition here*/})
.map(object->{/*do something with object that match condition above*/})
.collect(Collectors.toList());
Вы можете использовать этот механизм для сбора и обработки объектов на основе определенных условий.
Если это не поможет, может быть, использовать итератор?
Iterator<Object> it = objects.iterator();
while(it.hasNext()){
Object node = someFunction(session,it);
}
public Object someFunction(Session session,Iterator i){
//manipulate i value based on condition
if(true){
i.next();
}else{
i.next();
i.next();
}
}