int testValue;
boolean success = false;
while(success == false) {
testValue = generateRandomInt();
success = mySystem.getHosts().parallelStream().allMatch(predicate(testValue));
}
return testValue;
我正在玩java8流。你有什么建议让上面的代码更优雅/可读?
答案 0 :(得分:14)
您可以使用无限IntStream
代替while
循环,并返回符合条件的流的第一个int
:
return IntStream.generate (() -> generateRandomInt())
.filter (i -> mySystem.getHosts().parallelStream().allMatch(predicate(i)))
.findFirst()
.getAsInt();
答案 1 :(得分:8)
您可以使用jdk-9
s takeWhile
(当它可用时)执行此操作:
Stream.generate(() -> generateRandomInt())
.takeWhile(x -> mySystem.getHosts().parallelStream().allMatch(predicate(x)))
.findAny()
.get();