Вы могли бы сделать свой код лучше, создав метод
public void addAllIfEmpty(List<Object> list, Supplier<List<Object>> method){
if(list.isEmpty()){
list.addAll(method.get());
}
}
Затем вы можете использовать его следующим образом (я предположил, что ваши методы не являются статическими, если вам нужно ссылаться на них, используя ClassName::method1
)
List<Object> list = new ArrayList<>();
list.addAll(method1());
addAllIfEmpty(list, this::method2);
addAllIfEmpty(list, this::method3);
addAllIfEmpty(list, this::method4);
addAllIfEmpty(list, this::method5);
addAllIfEmpty(list, this::method6);
return list;
Если вы действительно хотите использовать поток, вы можете сделать это
Stream.<Supplier<List<Object>>>of(this::method1, this::method2, this::method3, this::method4, this::method5, this::method6)
.collect(ArrayList::new, this::addAllIfEmpty, ArrayList::addAll);
IMO, это усложнит, в зависимости от того, как вашссылки на методы, может быть лучше использовать цикл