How do I get an IntStream from a List<Integer>?

boxing, collections, java, java-8, java-stream

Solution

I guess (or at least it is an alternative) this way is more performant:

public static IntStream baz(List<Integer> list)
{
    return list.stream().mapToInt(Integer::intValue);
}

since the function `Integer::intValue` is fully compatible with `ToIntFunction` since it takes an `Integer` and it returns an `int`. No autoboxing is performed.

I was also looking for an equivalent of `Function::identity`, i hoped to write an equivalent of your `bar` method :

public static IntStream qux(List<Integer> list)
{
    return list.stream().mapToInt(IntFunction::identity);
}

but they didn't provide this `identity` method. Don't know why.

Problem

I can think of two ways: ``` public static IntStream foo(List<Integer> list) { return list.stream().mapToInt(Integer::valueOf); } public static IntStream bar(List<Integer> list) { return list.stream().mapToInt(x -> x); } ``` What is the idiomatic way? Maybe there is already a library function that does exactly what I want?

Original source