总述

  • jdk1.8引入了Stream相关的API,通过该API。可以实现流式编程,使你写代码的时候行云流水
  • Stream使得集合的转换变得更加简单,原来可能需要写多个for循环或者多个if判断的,直接一个stream

操作就可以实现


细说

		List<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
arr.add(3);
arr.add(4);
arr.stream().map(i -> i*2).collect(Collectors.toList());
System.out.println(arr);
arr.stream().forEach(i -> {i = i*2;});
System.out.println(arr); ---输出为:
[1, 2, 3, 4]
[1, 2, 3, 4]

说明:

  • Stream的用法遵循三个步骤: 创建---》转换---》聚合
  • Stream的API支持对列表的多种操作,可以实现list转map,map转list等各种操作
  • Stream操作不会修改原来集合类型的值

注意点:

  • 数组创建Stream应使用Arrays.stream(brr) , 列表创建Stream应使用list.stream()。如果直接调用Stream.of方法,实际上调用的是 public static<T> Stream<T> of(T t) 而不是 public static<T> Stream<T> of(T... values)

图说jdk1.8新特性(4)--- stream的更多相关文章

  1. JDK1.8新特性之Stream类初识

    JDK1.8新特性之Stream类初识 import java.util.Arrays; import java.util.List; import java.util.Optional; impor ...

  2. jdk1.8 新特性之Stream

    --------------------- 作者:码农农码一生 来源:CSDN 原文:https://blog.csdn.net/chenhao_c_h/article/details/8069128 ...

  3. 图说jdk1.8新特性(3)--- 注解与类型推测优化

    获取同一类型多个注解 ​ jdk1.8的java.lang.Class类新增了方法getAnnotationsByType方法,该方法可以获取某一个类型的注解列表,具体代码示例如下: public c ...

  4. 图说jdk1.8新特性(5)--- 编译器新特性

    /** * Returns the name of the parameter. If the parameter's name is * {@linkplain #isNamePresent() p ...

  5. 图说jdk1.8新特性(1)--- 函数式接口

    函数式接口 总结起来就以下几点: 如果一个接口要想成为函数接口(函数接口可以直接用lambda方式简化),则必须有且仅有一个抽象的方法(非default和static) 可以通过注解@Function ...

  6. 图说jdk1.8新特性(2)--- Lambda

    简要说明 jdk常用函数式接口 Predicate @FunctionalInterface public interface Predicate<T> { boolean test(T ...

  7. JDK1.8新特性——Stream API

    JDK1.8新特性——Stream API 摘要:本文主要学习了JDK1.8的新特性中有关Stream API的使用. 部分内容来自以下博客: https://blog.csdn.net/icarus ...

  8. JDK1.8新特性(一) ----Lambda表达式、Stream API、函数式接口、方法引用

    jdk1.8新特性知识点: Lambda表达式 Stream API 函数式接口 方法引用和构造器调用 接口中的默认方法和静态方法 新时间日期API default   Lambda表达式     L ...

  9. JDK1.8 新特性

    jdk1.8新特性知识点: Lambda表达式 函数式接口 *方法引用和构造器调用 Stream API 接口中的默认方法和静态方法 新时间日期API https://blog.csdn.net/qq ...

随机推荐

  1. pip安装yaml

    1.安装:输入pip install pyyaml或者pip3 install pyyaml 2.检查是否安装成功:输入python

  2. Openresty与Tengine

    Tengine官方网站:http://tengine.taobao.org/index_cn.html OpenResty官方网站:http://openresty.org/ Openresty和Te ...

  3. 使用gevent包实现concurrent.futures.executor 相同的公有方法。组成鸭子类

    类名不同,但公有方法的名字和提供的基本功能大致相同,但两个类没有共同继承的祖先或者抽象类 接口来规定他,叫鸭子类. 使并发核心池能够在 threadpoolexetor和geventpoolexecu ...

  4. flink ---- 系统内部消息传递的exactly once语义

    At Most once,At Least once和Exactly once 在分布式系统中,组成系统的各个计算机是独立的.这些计算机有可能fail. 一个sender发送一条message到rec ...

  5. word中的总页数不包括封面、目录

    删除分隔符:选项-显示-显示所有格式标记

  6. 在LabWindows/CVI中能同时读写一个文件吗?

    主要软件: 主要软件版本: 6.0 主要软件修正版本: N/A 次要软件: N/A 问题: 我需要在一个线程中将数据写入文件中,同时在另一个线程中读取这个文件中的数据,这样做可以吗?解答: 使用CVI ...

  7. 【Spring Boot学习之六】Spring Boot整合定时任务&异步调用

    环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2一.定时任务1.启动类添加注解@EnableScheduling 用于开启定时任务 package com.wjy; i ...

  8. Modelsim SE-64 10.4的安装 、破解以及远程使用

    1.准备好modelsim SE-64 10.4的安装包和破解文件(modelsim-win64-10.4-se.exe  和MentorKG.exe ,patch_dll.bat). 2.安装 好  ...

  9. turtle1

    #画风车 from turtle import * pensize(2) for i in range(4): seth(360-i*90) fd(150) rt(90) circle(-150,45 ...

  10. 线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式

    1. 通过Executors创建线程池的弊端 在创建线程池的时候,大部分人还是会选择使用Executors去创建. 下面是创建定长线程池(FixedThreadPool)的一个例子,严格来说,当使用如 ...