Java8特性-使用Stream中的of需要知道的事

    科技2024-07-17  65

      首先需要知道的是Stream中的of有两个重载方法:

    public static<T> Stream<T> of(T... values); public static<T> Stream<T> of(T t);

      在学习Stream的过程中,发现一个比较有趣的点,就是8大常规类型的数组会被第二个,也就是仅传入一个元素的of识别。

    情景模拟:

    分别用 常规的int值,常规的int数组,Integer,Integer数组来创建流,并查看IDEA自动生成的类型。

    测试代码:

    @Test public void testOf(){ int x =1; int [] arr1 ={1,2,3}; Integer y =1; Integer [] arr2 ={1,2,3}; // x 会自动装箱 Stream<Integer> stream1 = Stream.of(x); //Stream封装的元素为int[] Stream<int[]> stream2 = Stream.of(arr1); Stream<Integer> stream3 = Stream.of(y); Stream<Integer> stream4 = Stream.of(arr2); }

      如上表明常规类型的数组会被当做一个 int[] 类型的值,而不被当做是一个数组。

    解决方法

    int [] arr1 ={1,2,3}; Stream<Integer> stream5 = Arrays.stream(arr1).boxed();

    更多关于Stream的知识,可以参看这篇博客Java-Stream学习笔记(上)

    Processed: 0.015, SQL: 8