Вот полностью рабочий пример. Если вам нужен только основной фрагмент кода, то go здесь .
В основном методе я использовал IntStream
и преобразовал их в список BigDecimal, который будет используется как количество шоколада.
В getChocolateAmmountPerCakeHelperMethod
я создаю список объектов Cake из количества шоколада. Это делается путем потоковой передачи количества шоколада, отображения, т.е. преобразования каждого количества в объект Cake с правильным количеством шоколада, а затем сбора всех Cakes в список. Кроме того, я печатаю все объекты Cake.
import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class CakeMaker {
public List<Cake> getChocolateAmmountPerCakeHelperMethod(List<BigDecimal> chocolateAmounts) {
List<Cake> cakes = chocolateAmounts
.stream()
//If we had constructor Cake(BigDecimal choco), then map(...) code would be Cake::new OR choco -> new Cake(choco)
.map(choco -> { Cake cake = new Cake(); cake.setChocolateAmount(choco); return cake;} )
.collect(Collectors.toList());
return cakes;
}
public static void main(String [] args){
List<BigDecimal> chocos = IntStream
.rangeClosed(5, 10)
.mapToObj( i -> BigDecimal.valueOf(i) )
.collect(Collectors.toList());
CakeMaker cm = new CakeMaker();
List<Cake> cakes = cm.getChocolateAmmountPerCakeHelperMethod(chocos);
cakes.forEach(System.out::println);
}
}
Обновлен код класса Cake:
import java.math.BigDecimal;
public class Cake {
private BigDecimal chocolateAmount;
public Cake() {}
public Cake(BigDecimal chocolateAmount) {
this.chocolateAmount = chocolateAmount;
}
public void setChocolateAmount(BigDecimal chocolateAmount) {
this.chocolateAmount = chocolateAmount;
}
@Override
public String toString(){
return "CAKE [ choco = " + chocolateAmount + "]";
}
}
Вывод:
CAKE [ choco = 5]
CAKE [ choco = 6]
CAKE [ choco = 7]
CAKE [ choco = 8]
CAKE [ choco = 9]
CAKE [ choco = 10]