是否有更好的方法从嵌套流中获取
any
值?
String a = obj.getCustomer().getDetails().stream()
.findAny()
.map(CustomerDetail::getContact)
.map(Contact::getMobiles)
.stream()
.findAny()
.map(o -> o.getNumber())
.orElse(null);
String b = obj.getCustomer().getDetails().stream()
.findAny()
.map(CustomerDetail::getContact)
.flatMap(o -> o.getMobiles()
.stream()
.findAny()
.map(o2 -> o2.getNumber()))
.orElse(null);
经验法则是让方法更接近数据并利用封装 =)
在您的情况下,您可能希望将嵌套流逻辑提取到方法中
Contact#getAnyMobileNumber
(或任何东西):
String a = obj.getCustomer().getDetails().stream()
.findAny()
.map(CustomerDetail::getContact)
.map(Contact::getAnyMobileNumber)
.orElse(null);