您现在的位置是:首页 > 正文

jdk1.8创建stream的方法有哪些??

2024-04-01 07:12:46阅读 2

环境:jdk1.8

创建stream的方法常见的有:单线程(stream),多线程(parallelStream),Stream.of(),Stream.iterate()等等。

详情见代码:

public static void main(String[] args) {
		streamRange();
	}

	/**
	 * 用range/rangeclose 创建stream
	 * */
	private static void streamRange() {
		// 用range/rangeclose 创建stream
		IntStream stream1 = IntStream.range(0, 10);
		stream1.forEach(System.out::println);

		IntStream stream2 = IntStream.rangeClosed(0, 10);
		stream2.forEach(System.out::println);
	}

	/**
	 * 用生成器生成stream
	 */
	private static void streamGenerate() {
		// 用生成器生成stream
		Stream<Integer> liStream = Stream.generate(() -> new Random().nextInt(100));

		// 取前10个打印
		liStream.limit(10).forEach(System.out::println);
	}

	/**
	 * 迭代器创建stream
	 */
	private static void streamIterate() {
		// iterate 创建stream ,参数一:迭代器起始值,参数二:每次迭代的变化
		Stream<Integer> stream = Stream.iterate(0, x -> x + 2);

		// 取前10个打印
		stream.limit(10).forEach(e -> System.out.println(e));
	}

	/**
	 * of 方法创建stream
	 */
	private static void streamOf() {
		Stream<String> stream = Stream.of("abc", "def", "hij", "klm");
		stream.forEach(e -> System.out.println(e));
	}

	/**
	 * 使用数组创建stream
	 */
	private static void streamArrays() {
		String[] strs = { "juhuasuan", "xinniu", "jingshugou", "konglong" };

		Stream<String> list = Arrays.stream(strs);
		// 第一次使用stream
		list.forEach(e -> System.out.println(e));

		// 第二次使用stream
		list = Arrays.stream(strs);
		list.forEach(System.out::printf);
	}

	/**
	 * 多线程创建流
	 */
	private static void streamMultThreading() {
		List<String> list = new ArrayList<>();
		list.add("jindong");
		list.add("taobao");
		list.add("tianmao");
		list.add("pinduoduo");

		Stream<String> stream = list.parallelStream();

		// 第一次使用stream
		stream.forEach(e -> System.out.println(e));

		// 第二次使用stream
		stream = list.parallelStream();
		stream.forEach(System.out::printf);
	}

	/**
	 * 单线程创建流
	 */
	private static void streamSingleThread() {
		List<String> list = new ArrayList<String>();
		list.add("huawei");
		list.add("apple");
		list.add("oppo");
		list.add("vivo");
		Stream<String> streamList = list.stream();

		// 第一次使用stream
		streamList.forEach(s -> System.out.println(s));

		// 第二次使用stream
		streamList = list.stream();
		streamList.forEach(System.out::printf);
	}

 

网站文章

  • windowTranslucentStatus设置为true的坑

    原文地址:https://www.jianshu.com/p/f345f5715ecd windowTranslucentStatus是Android4.4(API为19)开始提供的样式设置,如果要想在4.4手机上做沉浸式状态栏那么直能设置true。在Android5.0以后的版本可以不用设置windowTranslucentStatus=true来做沉浸式状态栏,可以直接设置状态栏颜色。...

    2024-04-01 06:59:51
  • Idea集成Git

    Idea集成Git

    安装Git工具 Git是版本控制系统,可以借助Git实现团队代码版本控制及管理,从官方https://www.gitscm.com/downl…,如图所示: Git下载完成以后,傻瓜式(一直下一步)...

    2024-04-01 06:59:44
  • Android实现双进程守护

    Android实现双进程守护

    如何保证Service不被Kill有关Service的知识请参考Android Service全面解析这篇文章,写的很详细。(1)onStartCommand方法,返回START_STICKY@Override public int onStartCommand(Intent intent, int flags, int startId) { flags = START_STICKY

    2024-04-01 06:59:37
  • 2021-07-22

    2021-07-22

    前言 Ubuntu16.04 安装 ROS时,有时在运行sudo rosdep init后出现下所示错误: (图1)rosdep init ROS安装问题 首先试着通过浏览器访问error中提及的网址...

    2024-04-01 06:58:56
  • C++ PASCAL关键字(转)

    VC里面:PASCAL==CALLBACK==WINAPI==__stdcall _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆...

    2024-04-01 06:58:49
  • Spring Boot 发送邮件全解析

    Spring Boot 发送邮件全解析

    1.前言 今天我们就来学一下如何在Spring Boot下发送电子邮件。 2. 依赖 Java 发送邮件依赖jakarta项目(原javaEE)提供的jakarta.mail组件,Maven坐标: com.sun.mail jakarta.mail ...

    2024-04-01 06:58:42
  • STM32CubeIDE中文

    STM32CubeIDE中文

    【Windows】——【Preferences】——【General】——【Appearance】——【Colors and Fonts】——【Edit】——【把“西欧字符”改成“中欧字符”】如果你在...

    2024-04-01 06:58:00
  • 基于SpringBoot+MyBatis实现的个人博客系统(一)

    基于SpringBoot+MyBatis实现的个人博客系统(一)

    基于SpringBoot+MyBatis实现的个人博客系统(一)

    2024-04-01 06:57:54
  • 【vue2】解决Vuex刷新页面数据丢失的问题

    【vue2】解决Vuex刷新页面数据丢失的问题

    解决Vuex刷新页面数据丢失的问题

    2024-04-01 06:57:50
  • 新东方高中计算机模拟试卷,同等学力计算机综合模拟试题(2)

    1. 比较下列集合的基数大小并给出证明:A×A,P(A),2→A,A→2.解答与评分标准:|A×A| = |2→A| = |A|2(2 分),|P(A)| = |A→2| = 2|A|(2 分)。分情况讨论:(1) A 为空集:注意A→2={空关系},|A×A| = |2→A| = 0 < |P(A)| = |A→2| = 1。(1 分)(2) A 为有限集且|A|=1:|A×A| = |2...

    2024-04-01 06:57:40