数据准备

/**** 英雄类* @author XYuser**/
public class Person {private String firstName,lastName,job,tech;private int age,score;public Person(String firstName, String lastName, String job, String tech, int age, int score) {this.firstName = firstName;this.lastName = lastName;this.job = job;this.tech = tech;this.age = age;this.score = score;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public String getTech() {return tech;}public void setTech(String tech) {this.tech = tech;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}
}

import java.util.ArrayList;
import java.util.IntSummaryStatistics;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;/**** lambda操作stream的使用* **/
public class StreamStudy {static List<Person> dragonHeros;static List<Person> eagleHeros;static{dragonHeros = new ArrayList<Person>(){{add(new Person("乔峰", "萧峰", "丐帮帮主", "降龙十八掌", 28, 95));add(new Person("慕容复", "南慕容", "姑苏燕子坞个体", "以彼之道", 26, 90));add(new Person("段延庆", "大理太子", "西夏一品堂", "一阳指", 46, 92));add(new Person("鸠摩智", "污那贼秃", "西夏一品堂", "火焰刀", 26, 90));add(new Person("段誉", "舔勾", "大理皇族", "六脉神剑", 24, 87));add(new Person("丁春秋", "星宿老怪", "星宿海", "化功大法", 64, 88));add(new Person("苏星河", "聪辩先生", "逍遥派掌门", "珍珑棋局", 44, 87));add(new Person("王语嫣", "嘴炮", "曼陀罗山庄", "颜值正义", 18, 0));}};eagleHeros = new ArrayList<Person>(){{add(new Person("黄药师", "东邪", "桃花岛主", "弹指神通", 55, 92));add(new Person("郭靖", "金刀驸马", "襄阳", "九阴真经", 35, 90));add(new Person("王重阳", "重阳真人", "全真派", "先天功", 76, 98));add(new Person("欧阳锋", "西毒", "白陀山", "蛤蟆功", 56, 94));add(new Person("洪七公", "九指神丐", "丐帮", "打狗棒", 58, 92));add(new Person("一灯大师", "南帝", "大理", "一阳指", 64, 88));add(new Person("金轮法王", "大明轮王", "蒙古国师", "龙象般若功", 50, 90));add(new Person("黄蓉", "智囊", "桃花岛", "桃花落英掌", 30, 77));}};}public static void main(String[] args) {//过年了,给每位英雄加一岁System.out.println("过年了,给每位英雄加一岁:");Consumer<Person> ageRaise = e -> e.setAge(e.getAge() + 1);dragonHeros.forEach(ageRaise);System.out.println("所有英雄姓名:");dragonHeros.forEach(hero -> System.out.printf("%s %d;",hero.getFirstName(),hero.getAge()));System.out.println();eagleHeros.forEach(hero -> System.out.printf("%s %s;",hero.getFirstName(),hero.getLastName()));//过滤器//定义filterPredicate<Person> ageFilter = (p) -> p.getAge() > 26;Predicate<Person> scoreFilter = (p) -> p.getScore() > 90;Predicate<Person> techFilter = (p) -> "桃花岛主".equals(p.getJob());Stream<Person> filter = eagleHeros.stream().filter(ageFilter).filter(techFilter).filter(scoreFilter);System.out.println("---------高精英------------");filter.forEach(p -> System.out.printf(p.getFirstName() + "--"));System.out.println(eagleHeros.stream().filter(hero -> hero.getAge() > 35).count());//使用limit 方法dragonHeros.stream().filter(ageFilter).limit(3).forEach(p -> System.out.print(p.getLastName()+";"));System.out.println();//排序List<Person> list = dragonHeros.stream().sorted((p1,p2) -> (p2.getAge() - p1.getAge())).limit(3).collect(Collectors.toList());System.out.println("选三位最年老的英雄去祭祀:");list.forEach(e -> System.out.print(e.getFirstName() + ";"));//取min或者maxPerson person = eagleHeros.stream().min((p1,p2)-> p1.getScore() - p2.getScore()).get();System.out.println(person.getFirstName() +":" + person.getTech());Person person2 = dragonHeros.stream().max((p1,p2) -> p1.getScore() - p2.getScore()).get();System.out.println(person2.getFirstName() +":" + person2.getTech());//collect用法,,将天龙英雄们的绝学用#连城一串String tech = dragonHeros.stream().map(Person :: getTech).collect(Collectors.joining("#"));System.out.println(tech);Set<String> techSet = eagleHeros.stream().map(Person :: getTech).collect(Collectors.toSet());techSet.forEach((t) -> System.out.print(t + ";"));IntSummaryStatistics intss = eagleHeros.stream().mapToInt((x) -> x.getScore()).summaryStatistics();System.out.println("最大的能力值的英雄:" + intss.getMax());System.out.println("最小的能力值的英雄:" + intss.getMin());System.out.println("所有能力值数字之和:" + intss.getSum());//并行计算所有英雄的能力值之和int s = eagleHeros.parallelStream().mapToInt(p -> p.getScore()).sum();System.out.println("所有能力值数字之和:" + s);}
}

参考https://blog.csdn.net/sunp_csdn/article/details/55050313

Lambda-Stream应用相关推荐

  1. lambda stream流处理异常的方法/Either不终止stream流处理异常

    lambda stream流处理异常的方法/Either不终止stream流处理异常 1.直接用try/catch捕获 1.1 stream流中使用try/catch 案例如下,在list中存在可能引 ...

  2. java stream foreach_Java 8 Lambda Stream forEach具有多个语句

    我仍在学习Lambda,请原谅我做错了什么 final Long tempId = 12345L; List updatedEntries = new LinkedList<>(); fo ...

  3. 零基础学习java------21---------动态代理,java8新特性(lambda, stream,DateApi)

    1. 动态代理 在一个方法前后加内容,最简单直观的方法就是直接在代码上加内容(如数据库中的事务),但这样写不够灵活,并且代码可维护性差,所以就需要引入动态代理 1.1 静态代理实现 在讲动态代理之前, ...

  4. Lambda Stream

    Lambda Lambda 表达式的本质: 函数式接口的实例: 函数式接口:@FunctionalInterface 标识的接口,只有一个抽象方法: 核心函数式接口 接口名称 抽象方法 Consume ...

  5. parallel循环java_Java 8 lambda stream forEach parallel 等循环与Java 7 for each 循环耗时测试...

    Java 8 里面的stream 有串行流和并行流之分. 说高级的stream就是那个并行流.下面是那个并行流的简单实现.只要是继承Collection类的都可以这么用. list.stream(). ...

  6. java8 Lambda Stream collect Collectors 常用实例

    将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...

  7. lambda stream 循环_jdk8-lambda-stream的使用

    1, 认识stream(声明式编程) Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator, 原始版本的Iterator,用户只能一个一 ...

  8. Java基础巩固(二)异常,多线程,线程池,IO流,Properties集合,IO工具类,字符流,对象流,Stream,Lambda表达式

    一.异常,多线程 学习目标 : 异常的概述 异常的分类 异常的处理方式 自定义异常 多线程入门 1 异常的概述 1.1 什么是异常? 异常就是程序出现了不正常情况 , 程序在执行过程中 , 数据导致程 ...

  9. JDK1.8中的Stream详解

    Stream简介 Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 XML ...

  10. stream of java_java8新特性之强大的Stream API

    Stream API Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作. 使用Stream API 对集合数据进行操作, ...

最新文章

  1. 【剑指offer】树的子结构
  2. HTML DOM简介
  3. 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用
  4. FLV提取AAC音频单独播放并实现可视化的频谱
  5. 种子谋定翻身-农民丰收节交易会·万建民:破解卡脖子难题
  6. LeetCode:62. 不同路径
  7. linux清理swap内容,Linux如何清理swap.buffer及cache等缓存
  8. 第04讲: 基础探究,Session 与 Cookies
  9. 深入理解浏览器原理和架构|硬核
  10. Npoi导出excel整理(附源码)
  11. Github如何更新Fork的仓库
  12. python学习之路-书籍推荐
  13. 【Flink】 producer attempted to use a producer id which is not currently assigned to its transaction
  14. NSDictionary使用枚举方法
  15. IOS开发-UIView之动画效果的实现方法(合集)
  16. UVA489 Hangman Judge【模拟】
  17. 电子围栏判断_脉冲电子围栏和张力围栏之间的区别
  18. 力扣刷题-动态规划算法3:完全背包问题
  19. SQL Server 函数汉字转首字母或全拼
  20. It彭于晏带你学JAVA之适配器模式及API

热门文章

  1. 小目标检测--SNIP
  2. Excel 2010 VBA 入门 058 定时运行程序
  3. android 驱动程序,安卓设备安装USB驱动程序教程
  4. flux护眼软件设置
  5. i7 8700k 安装linux,Intel i7 8700K核显UHD620安装黑苹果仿冒HD620方法
  6. 北京外国语大学计算机考研,北京外国语大学考研难吗?一般要什么水平才可以进入?...
  7. java 定义16进制_java数据类型(大小等),变量定义,各进制书写方法
  8. 定义并实现一个银行类
  9. 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
  10. 揭秘如何搭建梦幻西游社交框架