19 Eylül 2022 Pazartesi

Optional.stream metodu

Giriş
Java 9 ile geliyor. Açıklaması şöyle.
returns a sequential Stream containing only that valueotherwise returns an empty Stream.
Örnek
Şöyle yaparız. Eğer orderId nesnesi null ise stream de boş olacağı için geri kalen kodlar çalışmaz. 0 döner
public BigDecimal getOrderPrice(Long orderId) {
  return Optional.ofNullable(orderId) //Optinal<Long>
    .stream() //Stream<Long>
    .map(orderRepository::findByOrderId) //Stream<List<OrderLine>>
    .flatMap(Collection::stream) //Stream<OrderLine>
    .map(OrderLine::getPrice) //Stream<BigDecimal>
    .reduce(BigDecimal.ZERO, BigDecimal::add); //BigDecimal
}
Örnek
Şöyle yaparız.
ResponseEntry entry = Optional.ofNullable(serviceResponse.getEntryList())
        .stream() // Stream<List<ResponseEntry>>
        .flatMap(List::stream) // Stream<ResponseEntry>
        .filter(e -> "expectedValue".equals(e.getValue())) // filter here
        .findFirst() // Optional<ResponseEntry>
        .orElse(null); // or else null

Hiç yorum yok:

Yorum Gönder