Java嵌套流查找任意值

问题描述 投票:0回答:1

是否有更好的方法从嵌套流中获取

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);
java java-8
1个回答
0
投票

经验法则是让方法更接近数据并利用封装 =)

在您的情况下,您可能希望将嵌套流逻辑提取到方法中

Contact#getAnyMobileNumber
(或任何东西):

String a = obj.getCustomer().getDetails().stream()
    .findAny()
    .map(CustomerDetail::getContact)
    .map(Contact::getAnyMobileNumber)
    .orElse(null);
© www.soinside.com 2019 - 2024. All rights reserved.