一、代码实例:

package com.TestMain;

import com.alibaba.fastjson.JSON;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream; public class TestTest22 { public static void main(String args[]) throws Exception {
List<String> stringList = new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("4");
System.out.println(JSON.toJSONString(stringList));
Stream<String> stream = stringList.stream();
System.out.println("stream:"+JSON.toJSONString(stream));
//全部符合+任一符合+不符合
boolean a = stringList.stream().allMatch((s) -> Integer.parseInt(s) > 3);
System.out.println(JSON.toJSONString(a));
a = stringList.stream().anyMatch((s) -> Integer.parseInt(s) > 3);
System.out.println(JSON.toJSONString(a));
a = stringList.stream().noneMatch((s) -> Integer.parseInt(s) > 3);
System.out.println(JSON.toJSONString(a));
//将List转换为Set
Set<String> set= stringList.stream().collect(Collectors.toSet());
System.out.println(JSON.toJSONString(set));
//将List转换为Map
//Map map = stringList.stream().collect(Collectors.toMap(String::new,String::new));
Map map = stringList.stream().collect(Collectors.toMap((s)->{return "0"+s;},String::new));
System.out.println(JSON.toJSONString(map));
//count 和 distinct
long count = stringList.stream().count();
String max = stringList.stream().max(String::compareToIgnoreCase).toString();
String min = stringList.stream().max(String::compareToIgnoreCase).toString();
System.out.println("count:"+JSON.toJSONString(count));
System.out.println("max:"+JSON.toJSONString(max));
System.out.println("min:"+JSON.toJSONString(min));
stringList.add("4");
System.out.println("stream:"+JSON.toJSONString(stringList));
List<String> dis = stringList.stream().distinct().collect(Collectors.toList());
System.out.println("dis:"+JSON.toJSONString(dis));
//concat
List<String> stringList2 = new ArrayList<>();
stringList2.add("6");
stringList2.add("7");
stringList2.add("8");
stringList2.add("9");
List<String> concact = Stream.concat(stringList.stream(),stringList2.stream()).collect(Collectors.toList());
System.out.println("concact:"+JSON.toJSONString(concact));
//empty
Stream nullStream = Stream.empty();
//filter
List<String> filter = stringList.stream().filter((s)->{return Integer.parseInt(s)>=4;}).collect(Collectors.toList());
System.out.println("filter:"+JSON.toJSONString(filter));
//findAny 和 findFirst
String s1 = stringList.stream().findAny().get();
System.out.println("s:"+JSON.toJSONString(s1));
String s2 = stringList.stream().findFirst().get();
System.out.println("s:"+JSON.toJSONString(s2));
// flatMap 不知道怎么用,暂时不写
//List<String> flatMap = stringList.stream().flatMap().collect(Collectors.toList());
// forEach
stringList.stream().forEach((s) -> System.out.println("forEach: " + s));
// limit
List<String> limit = stringList.stream().limit(2).collect(Collectors.toList());
System.out.println("limit:"+JSON.toJSONString(limit));
//map
List<String> map1 = stringList.stream().map((s)->{return s+s;}).collect(Collectors.toList());
System.out.println("map1:"+JSON.toJSONString(map1));
//of
List<String> list = Stream.of("1","2").collect(Collectors.toList());
System.out.println("list:"+JSON.toJSONString(list));
// peek:感觉功能很重复呀,目前,没发现什么其他用处
list = stringList.stream().peek((s)->{Integer.parseInt(s);}).collect(Collectors.toList());
System.out.println("peek:"+JSON.toJSONString(list));
list = stringList.stream().peek((s)->{System.out.println("peek:"+s);}).collect(Collectors.toList());
System.out.println("peek:"+JSON.toJSONString(list));
// reduce:不知道怎么用,暂时算了
//这是全部求和的用法:acc表示上一次执行结果,item表示下一个要执行是数据
Optional accResult = Stream.of(1, 2, 3, 4)
.reduce((acc, item) -> {
System.out.println("acc : " + acc);
acc += item;
System.out.println("item: " + item);
System.out.println("acc+ : " + acc);
System.out.println("--------");
return acc;
});
System.out.println("accResult: " + accResult.get());
System.out.println("--------"); //reduce的第二个函数:开始的5表示起始结果。相当于求和时sum的初始值
int accResult2 = Stream.of(1, 2, 3, 4)
.reduce(5, (acc, item) -> {
System.out.println("acc : " + acc);
acc += item;
System.out.println("item: " + item);
System.out.println("acc+ : " + acc);
System.out.println("--------");
return acc;
});
System.out.println("accResult2: " + accResult2);
System.out.println("--------");
//reduce的第二个函数: //skip:丢弃第n之前(从1开始,包含n)的元素,得到剩下的数据
list = stringList.stream().skip(4).collect(Collectors.toList());
System.out.println("skip:"+JSON.toJSONString(list));
//sorted 和 toArray:挺基本的功能,就是排序和数组
list = stringList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("sorted:"+JSON.toJSONString(list));
Object[] array = stringList.stream().toArray();
System.out.println("array:"+JSON.toJSONString(array));
} }

二、输出结果:

com.TestMain.TestTest22
["1","2","3","4"]
stream:{"parallel":false}
false
true
false
["1","2","3","4"]
{"01":"1","02":"2","03":"3","04":"4"}
count:4
max:"Optional[4]"
min:"Optional[4]"
stream:["1","2","3","4","4"]
dis:["1","2","3","4"]
concact:["1","2","3","4","4","6","7","8","9"]
filter:["4","4"]
s:"1"
s:"1"
forEach: 1
forEach: 2
forEach: 3
forEach: 4
forEach: 4
limit:["1","2"]
map1:["11","22","33","44","44"]
list:["1","2"]
peek:["1","2","3","4","4"]
peek:1
peek:2
peek:3
peek:4
peek:4
peek:["1","2","3","4","4"]
acc : 1
item: 2
acc+ : 3
--------
acc : 3
item: 3
acc+ : 6
--------
acc : 6
item: 4
acc+ : 10
--------
accResult: 10
--------
acc : 5
item: 1
acc+ : 6
--------
acc : 6
item: 2
acc+ : 8
--------
acc : 8
item: 3
acc+ : 11
--------
acc : 11
item: 4
acc+ : 15
--------
accResult2: 15
--------
skip:["4"]
sorted:["4","4","3","2","1"]
array:["1","2","3","4","4"] Process finished with exit code 0

三、参考:

  1. Java 8 Stream API 的使用示例 - clover_toeic - 博客园

    注:很详细的实例,可以参考。
  2. Java 8 系列之 Stream 中万能的 reduce - 行云间 - CSDN 博客

    注:讲reduce讲的最清楚了。
  3. Java 8 中文版 - 在线 API 中文手册 - 码工具

    注:JDK 官方API。可以详细参考。

Stream API的代码示例.md的更多相关文章

  1. Java 8 Stream API的使用示例

    前言 Java Stream API借助于Lambda表达式,为Collection操作提供了一个新的选择.如果使用得当,可以极大地提高编程效率和代码可读性. 本文将介绍Stream API包含的方法 ...

  2. 天气类API调用的代码示例合集:全国天气预报、实时空气质量数据查询、PM2.5空气质量指数等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 全国天气预报:数据来自国家气象局,可根据地名.经纬度GPS.IP查 ...

  3. 位置信息类API调用的代码示例合集:中国省市区查询、经纬度地址转换、POI检索等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 中国省市区查询:2017最新中国省市区地址 经纬度地址转换:经纬度 ...

  4. 通讯服务类API调用的代码示例合集:短信服务、手机号归属地查询、电信基站查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 短信服务:通知类和验证码短信,全国三网合一通道,5秒内到达,费用低 ...

  5. 生活常用类API调用的代码示例合集:邮编查询、今日热门新闻查询、区号查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 邮编查询:通过邮编查询地名:通过地名查询邮编 今日热门新闻查询:提 ...

  6. 开发工具类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

  7. 出行服务类API调用的代码示例合集:长途汽车查询、车型大全、火车票查询等

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 长途汽车查询:全国主要城市的长途汽车时刻查询,汽车站查询 车型大全 ...

  8. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  9. Java 函数式编程(Lambda表达式)与Stream API

    1 函数式编程 函数式编程(Functional Programming)是编程范式的一种.最常见的编程范式是命令式编程(Impera Programming),比如面向过程.面向对象编程都属于命令式 ...

随机推荐

  1. pyinstaller打包好的.exe程序在别的电脑上运行出错

    打开.exe提示: Failed to execute script... 查看命令行错误提示为: 总的来说呢,就是有的版本pyqt5库对系统变量的加载存在bug,具体原因只有官方才能解释了,咱也没法 ...

  2. 洛谷P1860 新魔法药水

    洛谷题目链接 动态规划: 这个题目调了我好久....结果循环变量写错了... 而且题目有个坑!!!只能用开始给你的$v$元买入东西 回归正题: 我们定义状态$ans[i][j]$表示第$i$个物品用了 ...

  3. 【概率论】3-1:随机变量和分布(Random Variables and Discrete Distributions)

    title: [概率论]3-1:随机变量和分布(Random Variables and Discrete Distributions) categories: Mathematic Probabil ...

  4. centos6中安装VMware Tools

    使用的是centos6.8,其他6版本方法大致相同. 1 .工具/原料1)安装过虚拟机软件的计算机2)linux操作系统 3)虚拟机配置VMware tools文件, 点击工具栏上的[虚拟机],然后选 ...

  5. Golang字符串处理以及文件操作

    一.整数 1.int与uint的初值比较以及其大小. 1 /* 2 #!/usr/bin/env gorun 3 @author :xxxx 4 Blog:http://www.cnblogs.com ...

  6. mysql数据库的还原及常见问题解决

    例如:需要还原的数据库脚本文件为test.sql,脚本中已包含数据库的创建,test.sql所在目录为/home 1.常用source命令 进入mysql数据库控制台,如mysql -uroot -p ...

  7. Windows Form, Ok, Cancel button

    1. 为button设置DialogResult property为非None值, 可以关闭父窗口,并使父窗口的DialogResult property返回相应的值. http://msdn.mic ...

  8. Flutter用dio封装http网络请求,设置统一的请求地址、headers及处理返回内容

    封装http请求是项目中经常需要做的,常用于设置通用请求地址.请求headers以及处理返回结果,例如在项目中开发地址.测试地址.上线地址是不一样的,当在封装的请求设置好默认地址之后只需要改一个地址而 ...

  9. vue实现全选框效果

    vue实现全选框效果 一.总结 一句话总结: 全选的checkbox点击的时候判断这个checkbox的状态,如果没选中,说明下一个操作是选中所有 下面的每个checkbox判断一下是否所有的chec ...

  10. FYI是什么意思?

    FYI是For Your Information的缩写,英语解释为:提供给您的信息,供您参考,是当前在外企中流行的英文缩写,为工作用语,常用于工作的电子邮件中.     文章来源:刘俊涛的博客 欢迎关 ...