1. 创建Stream实例的五种方式

  @Test
public void test1(){
// 创建Stream对象的第一种方式
List<String> list = Lists.newArrayList("A", "B", "C");
Stream<String> stream1 = list.stream(); // 创建Stream对象的第二种方式
String[] arr = {"A", "B"};
Stream<String> stream2 = Arrays.stream(arr); // 创建Stream对象的第三种方式 Stream<String> stream3 = Stream.of("A", "B"); // 创建Stream对象的第四种方式
// iterate会无限执行,所以limit只取前5个
Stream<Integer> stream4 = Stream.iterate(0, x -> x * x).limit(5); // 创建Stream对象的第五种方式
// generate也会无限执行,所以limit只取前5个
Stream<Double> stream5 = Stream.generate(Math::random).limit(5);
}

2. Stream常用Api

 @Test
public void test2() {
List<String> list = Lists.newArrayList("abc", "bcd", "efg", "a12", "bcd");
// 1.过滤
list.stream().filter(x -> x.contains("b")).forEach(System.out::println); // 2.取前n
list.stream().limit(1).forEach(System.out::println); //3. 跳过前n个
list.stream().skip(2).forEach(System.out::println); //4. distinct 去重
list.stream().distinct().forEach(System.out::println); //5. map映射
list.stream().map(x -> x.toUpperCase()).forEach(System.out::println); System.out.println("-----------------------");
//6. flatMap映射(与scala中的map,flatMap一样的),返回的是个Stream
list.stream().flatMap(x -> Stream.of(x.toUpperCase())).forEach(System.out::println); //7.排序 sorted() ---> 自然排序
List<Integer> list1 = Lists.newArrayList(12, 1, 0, -1, 2, 56, 34);
list1.stream().sorted().forEach(System.out::println); //8.排序 sorted(Comparator com) --> 按指定规则排序
list1.stream().sorted((e1, e2) -> -Integer.compare(e1, e2)).forEach(System.out::println); //9. 匹配与查找
// list中的所有元素都含有"a"
boolean ret = list.stream().allMatch(x -> x.contains("a"));
System.out.println(ret); // list只要有一个元素包含有"a",就true
ret = list.stream().anyMatch(x -> x.contains("a"));
System.out.println(ret); //list中没有以"A"开头的元素
ret = list.stream().noneMatch(x -> x.startsWith("A"));
System.out.println(ret); //第一个元素
Optional<String> first = list.stream().findFirst();
System.out.println(first.get()); //找任意一个元素
Optional<String> any = list.parallelStream().findAny();
System.out.println(any.get()); // 找最大值
Optional<Integer> max = list1.stream().max(Integer::compareTo);
// 上面这行代码是下面代码的简写
// Optional<Integer> max1 = list1.stream().max((e1, e2) -> Integer.compare(e1, e2));
System.out.println(max.get()); //10 , 归约
Optional<Integer> reduce = list1.stream().reduce((x, y) -> x + y); // list1中元素求和
System.out.println(reduce.get()); Integer sum = list1.stream().reduce(0, Integer::sum); // list1中元素求和
System.out.println(sum); Integer sum2 = list1.stream().reduce(10, Integer::sum); // 10 + list1中元素求和
System.out.println(sum2); //11. collect--> 将stream转成list集合
List<Integer> collect = list1.stream().map(x -> x * 2).collect(Collectors.toList());
collect.forEach(System.out::println); }

Stream学习笔记的更多相关文章

  1. c#Stream学习笔记

    C# 温故而知新:Stream篇(—) http://www.cnblogs.com/JimmyZheng/archive/2012/03/17/2402814.html 基本概念重点看这一篇. 什么 ...

  2. java Stream学习笔记

    1.Stream与io无关. 2.Stream和用普通的循环没有太大区别,甚至时间复杂度更高,代码可读性差(通常代码行数更少). 3.流操作就是把循环要做的任务单独抽取出来,最终通过编译在一起. 来看 ...

  3. PHP stream 学习笔记一(同步阻塞 IO 模型)

    原文http://blog.csdn.net/shagoo/article/details/6396089 [root@localhost php]# vi server_one.php <?p ...

  4. JSP学习笔记

    JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...

  5. RAC学习笔记

    RAC学习笔记 ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾. 在学习Re ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  8. Rest API 开发 学习笔记(转)

    Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...

  9. Python核心编程第三版第二章学习笔记

    第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of ...

随机推荐

  1. xsxsxsxsxsxsxsxs

    <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Conten ...

  2. python 数字系列-复数的数学运算

    复数的数学运算 问题 你写的最新的网络认证方案代码遇到了一个难题,并且你唯一的解决办法就是使用复数空间. 再或者是你仅仅需要使用复数来执行一些计算操作. 解决方案 复数可以用使用函数 complex( ...

  3. leetcode 88. C++ 合并两个有序数组

    Leetcode 88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 ...

  4. mysql-M-S-S模型 中继器 级联

    1.基础环境 三台虚机并且安装有mysql 并且同步好数据库 2.主服务器-创建账号并授权 mysql> create user 'mslave'@'X.X.X.X' identified by ...

  5. Wildfly安装以及集成idea(mac)

    文章目录 Linux发布运行 下载 集成idea Linux发布运行 首先说一下在linux环境,只需要将war包上传到wildfly-8.2.0.Final/standalone/deploymen ...

  6. DEDE网站地图优化技巧

    DEDE网站地图优化技巧-把网站地图生成在系统根目录,利于搜索引擎收录相信恨多用DEDECMS做站的朋友,为避免将data目录内的东西随便外泄,在robots中将data目录屏蔽了,但是DEDE默认的 ...

  7. Requests爬取网页的编码问题

    Requests爬取网页的编码问题 import requests from requests import exceptions def getHtml(): try: r=requests.get ...

  8. Hibernate入门2

    实体类的编写规则 要求实体类的属性是私有的 要求实体类中的私有属性有公开的get和set方法(设置器和访问器) 要求实体类有一个属性作为唯一值(一般使用id值) 实体类属性建议不使用基本数据类型,使用 ...

  9. 洛谷P1168 中位数——set/线段树

    先上一波链接 https://www.luogu.com.cn/problem/P1168 这道题我们有两种写法 第一种呢是线段树,我们首先需要将原本的数据离散化,线段树维护的信息就是区间内有多少个数 ...

  10. [Linux] 009 链接命令

    链接命令:ln 命令名称:ln 命令英文原意:link 命令所在路径:/bin/ln 执行权限:所有用户 语法:ln -s [原文件] [目标文件] 功能描述:生成链接文件 范例: 创建文件 /etc ...