我正在准备 OCP 考试。 一本书中有以下复习问题,其答案是
allMatch
终端操作:
var s = Stream.generate(() -> "meow");
var match = s.allMatch(String::isEmpty);
System.out.println(match);
它执行并打印
false
我的问题是,当流是无限的并且应该挂起时,Java 如何确定所有元素都与谓词完全匹配?
我的答案是
anyMatch
选项,它实际上挂起了......
allMatch
没有“确定所有元素都与谓词完全匹配”。如果有的话,它就会返回true
。
它确定“有一个元素与谓词不匹配”,这更容易做到。之后,
allMatch
就可以返回 false。
对于
anyMatch
,它挂起是因为它无法确定是否存在任何空字符串,而且它永远不会这样做,因为这是一个无限的非空字符串流。
如果流中存在一个空字符串,
anyMatch
一旦找到该字符串就会返回true
。