如何退出流并在元素匹配谓词时返回

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

我有一个代表用户名的字符串列表。我遍历列表,并根据用户名检索对象(使用rest调用),然后访问返回的对象中的字段。如果发现单个出现的null作为该字段的值,则它将停止循环并返回false。

for (String memberName : memberLoginName) {
    final MemberInfo memberInfo = retrieveInfo(memberName);

    if (memberInfo.getDate() == null) {
        return false;
    }

    listOfMember.add(memberInfo);
}

try {
    send(listOfMember);
    return true;
} catch (Exception e) {
    System.out.println("Error sending list of Member");
    return false;
}

我的方法稍后在代码中返回true,但是我想知道是否可以使用流将上述代码转换为Java 8兼容代码。我研究了如果符合条件就能够返回/停止流,但是找不到确切的答案,因为我遇到的大多数答案值得商bat。

java java-8 stream
1个回答
0
投票
if (strings.stream() .map(this::retrieveInfo) .map(MemberInfo::getDate) .anyMatch(Objects::isNull)) { return false; } try { send(memberLoginName.stream() .map(this::retrieveInfo) .collect(Collectors.toList())); } catch (Exception e) { System.out.println("Error sending list of Member"); }

由于短路操作,两个解决方案(OP和我的解决方案的复杂性是相同的。

无论如何,出于好奇的目的,我会写这样的代码。
© www.soinside.com 2019 - 2024. All rights reserved.