int testValue;
boolean success = false;
while(success == false) {
testValue = generateRandomInt();
success = mySystem.getHosts().parallelStream().allMatch(predicate(testValue));
}
return testValue;
Run Code Online (Sandbox Code Playgroud)
我正在玩java8流.你有什么建议让上面的代码更优雅/可读?
Era*_*ran 14
您可以使用无限IntStream而不是while循环,并返回int符合您条件的第一个流:
return IntStream.generate (() -> generateRandomInt())
.filter (i -> mySystem.getHosts().parallelStream().allMatch(predicate(i)))
.findFirst()
.getAsInt();
Run Code Online (Sandbox Code Playgroud)
你可以用jdk-9s takeWhile(当它可用时):
Stream.generate(() -> generateRandomInt())
.takeWhile(x -> mySystem.getHosts().parallelStream().allMatch(predicate(x)))
.findAny()
.get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
478 次 |
| 最近记录: |