Why is this an issue?
For arrays of objects, Arrays.asList(T ... a).stream()
and Arrays.stream(array)
are basically equivalent in terms of
performance. However, for arrays of primitives, using Arrays.asList
will force the construction of a list of boxed types, and then use
that list as a stream. On the other hand, Arrays.stream
uses the appropriate primitive stream type (IntStream
,
LongStream
, DoubleStream
) when applicable, with much better performance.
Noncompliant code example
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
Arrays.asList(1, 2, 3, 4).stream() // Noncompliant
.filter(...)
.forEach(...);
Compliant solution
Arrays.asList("a1", "a2", "b1", "c2", "c1").stream()
.filter(...)
.forEach(...);
int[] intArray = new int[]{1, 2, 3, 4};
Arrays.stream(intArray)
.filter(...)
.forEach(...);