== Why is this an issue?

When using the ``++Stream++`` API, call chains should be simplified as much as possible to improve readability and maintainability.


This rule raises an issue when one of the following substitution can be made:

[frame=all]
[cols="^1,^1"]
|===
|Original|Preferred

|``++stream.collect(counting())++``|``++stream.count()++``
|``++stream.collect(maxBy(comparator))++``|``++stream.max(comparator)++``
|``++stream.collect(minBy(comparator))++``|``++stream.min(comparator)++``
|``++stream.collect(mapping(mapper))++``|``++stream.map(mapper).collect()++``
|``++stream.collect(reducing(...))++``|``++stream.reduce(...)++``
|``++stream.collect(summingInt(mapper))++``|``++stream.mapToInt(mapper).sum()++``
|``++stream.collect(summingLong(mapper))++``|``++stream.mapToLong(mapper).sum()++``
|``++stream.collect(summingDouble(mapper))++``|``++stream.mapToDouble(mapper).sum()++``
|===

=== Noncompliant code example

[source,java]
----
int count = stream.collect(counting());  // Noncompliant
----


=== Compliant solution

[source,java]
----
int count = stream.count();
----


ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

=== Message

Replace this "collect(xxx())" call by "yyy"


=== Highlighting

The "stream.collect()" call


endif::env-github,rspecator-view[]
