我有一个代表用户名的字符串列表。我遍历列表,并根据用户名检索对象(使用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。
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和我的解决方案的复杂性是相同的。
无论如何,出于好奇的目的,我会写这样的代码。