英文:
Composing predicates excercise JAVA hyperskill
问题
我正在Hyperskill上练习我的Java技能,但是我无法弄清楚关于组合谓词的这个练习。
编写disjunctAll方法,接受一个IntPredicate的列表,并返回一个单独的IntPredicate。结果谓词是所有输入谓词的分离。
如果输入列表为空,则结果谓词对于任何整数值都应返回false(始终为false)。
重要提示。请注意所提供的方法模板。不要对其进行更改。
public static IntPredicate disjunctAll(List<IntPredicate> predicates) {
}
英文:
I am practicing my java skills on Hyperskill and I cant figure out this excercise about composing predicates.
Write the disjunctAll method that accepts a list of IntPredicate's and returns a single IntPredicate. The result predicate is a disjunction of all input predicates.
If the input list is empty then the result predicate should return false for any integer value (always false).
Important. Pay attention to the provided method template. Do not change it.
public static IntPredicate disjunctAll(List<IntPredicate> predicates) {
}
答案1
得分: 3
一个简单的列表迭代就可以完成:
public static IntPredicate disjunctAll(List<IntPredicate> predicates)
{
IntPredicate result = i -> false;
for (IntPredicate p: predicates) {
result = p.or(result);
}
return result;
}
或者可以使用流操作的缩减器来简化:
public static IntPredicate disjunctAll(List<IntPredicate> predicates)
{
return predicates.stream()
.reduce(i -> false, IntPredicate::or);
}
英文:
A simple iteration of the list would do it:
public static IntPredicate disjunctAll(List<IntPredicate> predicates)
{
IntPredicate result = i -> false;
for (IntPredicate p: predicates) {
result = p.or(result);
}
return result;
}
or simply with a stream reducer:
public static IntPredicate disjunctAll(List<IntPredicate> predicates)
{
return predicates.stream()
.reduce(i -> false, IntPredicate::or);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论