46 lines
1.2 KiB
Plaintext
46 lines
1.2 KiB
Plaintext
== Why is this an issue?
|
|
|
|
When using the ``++Stream++`` API, call chains should be simplified as much as possible. Not only does it make the code easier to read, it also avoid creating unnecessary temporary objects.
|
|
|
|
|
|
This rule raises an issue when one of the following substitution is possible:
|
|
|
|
[frame=all]
|
|
[cols="^1,^1"]
|
|
|===
|
|
|Original|Preferred
|
|
|
|
|``++stream.filter(predicate).findFirst().isPresent()++``|``++stream.anyMatch(predicate)++``
|
|
|``++stream.filter(predicate).findAny().isPresent()++``|``++stream.anyMatch(predicate)++``
|
|
|``++!stream.anyMatch(predicate)++``|``++stream.noneMatch(predicate)++``
|
|
|``++!stream.anyMatch(x -> !(...))++``|``++stream.allMatch(...)++``
|
|
|``++stream.map(mapper).anyMatch(Boolean::booleanValue)++``|``++stream.anyMatch(predicate)++``
|
|
|===
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
boolean hasRed = widgets.stream().filter(w -> w.getColor() == RED).findFirst().isPresent(); // Noncompliant
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
boolean hasRed = widgets.stream().anyMatch(w -> w.getColor() == RED);
|
|
----
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
include::message.adoc[]
|
|
|
|
include::highlighting.adoc[]
|
|
|
|
endif::env-github,rspecator-view[]
|