将IntStream转换为集合或数组

Java 8Collectors类提供了许多静态方法来从 Stream 中收集对象并将它们存储到集合中。但是这些方法不适用于原语 Stream 。

//It works perfect !!
List<String> strings = Stream.of("how", "to", "do", "in", "java")
                    .collect(Collectors.toList());
//Compilation Error !!
IntStream.of(1,2,3,4,5).collect(Collectors.toList());

要将原始 Stream 转换为collection,可以采用以下两种方法。

1. IntStream到集合– boxed Stream

使用boxed()的方法IntStreamLongStreamDoubleStreamIntStream.boxed() ,你可以得到的 Stream 包装对象可通过收集Collectors方法。

List<Integer> ints = IntStream.of(1,2,3,4,5)
                .boxed()
                .collect(Collectors.toList());
        
System.out.println(ints);
Output:
[1, 2, 3, 4, 5]

2. IntStream到列表–将int映射到Integer

另一种方法是使用IntStream.mapToObj()IntStream.mapToLong()IntStream.mapToDouble()方法手动进行装箱。您可以使用其他 Stream 类中的其他类似方法。

List<Integer> ints = IntStream.of(1,2,3,4,5)
            .mapToObj(Integer::valueOf)
            .collect(Collectors.toList());
        
System.out.println(ints);
Output:
[1, 2, 3, 4, 5]

3.将IntStream转换为数组

了解如何将原始 Stream 转换为array也是有用的。使用IntStream.toArray()方法从int Stream 转换为array

int[] intArray = IntStream.of(1, 2, 3, 4, 5).toArray();
System.out.println(Arrays.toString(intArray));
Output:
[1, 2, 3, 4, 5]

同样,也可以使用或的toArray()功能。LongStreamDoubleStream

如果您有任何疑问,请在评论区留言,我会一一解答。

学习愉快!

saigon has written 1440 articles

Leave a Reply