Java stream()。noneMatch(...)和!stream()。anyMatch(...)之间的区别

时间:2019-09-03 23:29:22

标签: java java-8 java-stream

在性能上有任何区别吗?如果有的话

  1. { "00000": { "message": "**Scene 1**" }, }
  2. list.stream().noneMatch(...)

1 个答案:

答案 0 :(得分:7)

noneMatchanyMatch都是短路流操作。这意味着当结果已知时,他们将停止处理输入。

在您的情况下,它们在找到与传入的谓词匹配时都会停止。唯一的区别是noneMatch将在匹配中返回false,而{{1} }将返回anyMatch。您对true取反的结果使这两个表达式在逻辑上相等。

假设相同的anyMatch和相同的list,任何性能差异都可以忽略不计。两种方法都会在第一个匹配项(如果有的话)上短路,如果没有一个真正匹配项,则会遍历整个列表,并且一个否定运算符也不会起作用。