将数组转换为Stream流的两种方式--- Stream.of(数组名) 与 Arrays.stream(数组名)


将数组转换为流的方式:有两种;

  • Stream.of(数组名)
  • Arrays.stream(数组名)

对于不同的数据类型的数组,两种方式的返回值是不同的:

通过将数组转换为Stream流的两种方式;来遍历数组;查看它们的不同之处


首先看:Stream.of(数组名)

  • 当数组的数据类型为基础类型时:
public class Demo {
    public static void main(String[] args) {
        //当数组的数据类型为基本数据类型时;
        int[] array={1,2,3,5,6};
        //使用Stream.of方式;
        Stream.of(array).forEach(item -> System.out.print(item + " "));
    }
}

结果:

[I@404b9385

查看源码;发现此时 Stream.of 的参数和返回值一致;在调用此方法时;传入的数据为array;即int[];所以返回值为Stream<int[]>;得出的是数组地址.

 public static<T> Stream<T> of(T t) {
        return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false);
    }

  • 当数组的数据类型为包装类时
public class Demo {
    public static void main(String[] args) {
        //当数组的数据类型为包装类时;
        Integer[] array={1,2,3,5,6};
        //使用Stream.of方式;
        Stream.of(array).forEach(item -> System.out.print(item + " "));
    }
}

结果:

1 2 3 5 6 

查看源码:发现此时 Stream.of 的参数T... values是可变长度的参数;本质上就是个数组;返回值为Stream<Integer>;
输出的是数组中的元素.

public static<T> Stream<T> of(T... values) {
        return Arrays.stream(values);
    }

观察方法体;发现return Arrays.stream(values);;它转到Arrays.stream()方法中了;方法参数为T[] array;刚才的values传参;返回值为Stream<Integer>;
输出的是数组中的元素.

public static <T> Stream<T> stream(T[] array) {
        return stream(array, 0, array.length);
    }

第二种方式Arrays.stream(数组名)

  • 当数组的数据类型为基础类型时:
public class Demo {
    public static void main(String[] args) {
        //当数组的数据类型为基本数据类型时;
        int[] array={1,2,3,5,6};
        //使用Arrays.stream方式;
        Arrays.stream(array).forEach(item -> System.out.print(item + " "));
    }
}

结果:

1 2 3 5 6 

查看源码: 此方法的参数为int[ ] array 返回值为IntStream;

 public static IntStream stream(int[] array) {
        return stream(array, 0, array.length);
    }

  • 当数组的数据类型为包装类时
public class Demo0 {
    public static void main(String[] args) {
        //当数组的数据类型为包装类时;
        Integer[] array={1,2,3,5,6};
        //使用Arrays.stream方式;
        Arrays.stream(array).forEach(item -> System.out.print(item + " "));
    }
}

结果:

1 2 3 5 6 

查看源码: 此时方法的参数T[] array为数组;返回值为Stream<Integer>;输出的是数组的元素

public static <T> Stream<T> stream(T[] array) {
        return stream(array, 0, array.length);
    }

  • 18
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值