Basically,I need to get a size of optional list in an optional object. Something like:
private int getCount(@NonNull Optional<myObject> aaa) { if(aaa.isPresent() && aaa.get().getMyList().isPresent()) { return aaa.get().getMyList().get().size(); } return 0; }
The code doesn’t look nice. What’s the elegant way to get it? With ifPresent().orElse()? Thanks in advance!
Advertisement
Answer
Consecutive map
(or flatMap
, in case something returns an Optional
) operations, and a final orElse
:
private int getCount(@NonNull Optional<myObject> cvm) { return cvm .flatMap(x -> x.getMyList()) .map(list -> list.size()) // or List::size .orElse(0); }