Вообще говоря, цикл for над списком экземпляров класса A
, который создает экземпляр класса B
для каждого элемента в исходном списке, можно преобразовать в
List<A> as = .... ;
List<B> = as.stream().map(a -> createB(a)).collect(Collectors.toList());
, где
private B createB(A a) {
//returns new B() based on given a
}
Когда для каждого элемента в исходном списке вы можете создать более одного экземпляра B, цикл for for можно превратить в
List<A> as = .... ;
List<B> = as
.stream()
.flatMap(a -> CreateBs(a))
.collect(Collectors.toList());
, где
private Stream<B> createBs(A a) {
// returns Stream<B> based on a
}
Вы находитесь во втором сценарии, поэтому вы createBs(A)
- это
private Stream<ItemEntity> createItemEntity(Item item) {
return item.getVarietyList().isEmpty() ?
Stream.of(loadItemData(item, null)) :
item.getVarietyList().stream(x -> mapItemVarietyToItemEntity(item, x));
}
private ItemEntity mapItemVarietyToItemEntity(Item item, ItemVariety variety) {
loadItemData(item, variety);
}
В данный момент я не могу запустить приведенный выше код, но я надеюсь, что он может помочь вам найти решение, которое выищу.