Java8如何将Array转换为Stream的实现代码

 更新时间:2019年09月01日 09:19:08   作者:火炎焱  
这篇文章主要介绍了Java8如何将Array转换为Stream的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

引言

在 java8 中,您可以使用 Arrays.Stream 或 Stream.of 将 Array 转换为 Stream。

1. 对象数组

对于对象数组,Arrays.stream 和 Stream.of 都返回相同的输出。

public static void main(String[] args) {

 ObjectArrays();
 }

 private static void ObjectArrays() {
 String[] array = {"a", "b", "c", "d", "e"};
 //Arrays.stream
 Stream<String> stream = Arrays.stream(array);
 stream.forEach(x-> System.out.println(x));

 System.out.println("======");

 //Stream.of
 Stream<String> stream1 = Stream.of(array);
 stream1.forEach(x-> System.out.println(x));
 }

输出:

a
b
c
d
e
======
a
b
c
d
e

查看 JDK 源码,对于对象数组,Stream.of 内部调用了 Arrays.stream 方法。

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

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

2. 基本数组

对于基本数组,Arrays.stream 和 Stream.of 将返回不同的输出。

public static void main(String[] args) {

 PrimitiveArrays();
 }

private static void PrimitiveArrays() {
 int[] intArray = {1, 2, 3, 4, 5};

 // 1. Arrays.stream -> IntStream
 IntStream stream = Arrays.stream(intArray);
 stream.forEach(x->System.out.println(x));

 System.out.println("======");

 // 2. Stream.of -> Stream<int[]>
 Stream<int[]> temp = Stream.of(intArray);

 // 不能直接输出,需要先转换为 IntStream
 IntStream intStream = temp.flatMapToInt(x -> Arrays.stream(x));
 intStream.forEach(x-> System.out.println(x));

 }

输出:

1
2
3
4
5
======
1
2
3
4
5

查看源码,

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

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

Which one

  • 对于对象数组,两者都调用相同的 Arrays.stream 方法
  • 对于基本数组,我更喜欢 Arrays.stream,因为它返回固定的大小 IntStream,更容易操作。

所以,推荐使用 Arrays.stream,不需要考虑是对象数组还是基本数组,直接返回对应的流对象,操作方便。

源码见:java-8-demo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • springboot项目实现配置跨域

    springboot项目实现配置跨域

    这篇文章主要介绍了springboot项目实现配置跨域问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Spring Boot管理用户数据的操作步骤

    Spring Boot管理用户数据的操作步骤

    SpringBoot结合Thymeleaf模板引擎,可以快速搭建Web应用,介绍了使用SpringBoot处理JSON数据的基本过程,包括创建实体类、视图页面和控制器,通过这些步骤,即可完成基于SpringBoot和Thymeleaf的简单Web开发,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • SpringBoot查询PGSQL分表后的数据的代码示例

    SpringBoot查询PGSQL分表后的数据的代码示例

    数据库用的pgsql,在表数据超过100w条的时候执行定时任务进行了分表,分表后表名命名为原的表名后面拼接时间,但是我在java业务代码中,我想查询之前的那条数据就查不到了,本文给大家介绍了SpringBoot中如何查询PGSQL分表后的数据,需要的朋友可以参考下
    2024-05-05
  • Java毕业设计之多用户宿舍管理系统的实现

    Java毕业设计之多用户宿舍管理系统的实现

    这篇文章主要介绍了基于Java实现的多用户宿舍管理系统,本文采用了jsp、servlet、jdbc等技术,文中示例代码讲解详细,需要的可以参考一下
    2022-02-02
  • maven的安装配置使用详解

    maven的安装配置使用详解

    这篇文章主要介绍了maven的安装配置使用详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringBoot整合Web开发之Json数据返回的实现

    SpringBoot整合Web开发之Json数据返回的实现

    这篇文章主要介绍了SpringBoot整合Web开发其中Json数据返回的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Spring AOP核心功能示例代码详解

    Spring AOP核心功能示例代码详解

    AOP面向切面编程,它是一种思想,它是对某一类事情的集中处理,而AOP是一种思想,而Spring AOP是一个框架,提供了一种对AOP思想的实现,它们的关系和loC与DI类似,这篇文章主要介绍了Spring AOP统一功能处理示例代码,需要的朋友可以参考下
    2023-02-02
  • Java贪吃蛇游戏完善版

    Java贪吃蛇游戏完善版

    这篇文章主要为大家详细介绍了Java贪吃蛇游戏完善版,支持菜单操作,键盘监听,可加速,减速,统计得分等功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 一文搞懂Java中对象池的实现

    一文搞懂Java中对象池的实现

    池化并不是什么新鲜的技术,它更像一种软件设计模式,主要功能是缓存一组已经初始化的对象,以供随时可以使用。本文将为大家详细讲讲Java中对象池的实现,需要的可以参考一下
    2022-07-07
  • Java网络编程TCP实现聊天功能

    Java网络编程TCP实现聊天功能

    这篇文章主要为大家详细介绍了Java网络编程TCP实现聊天功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论