java8新特性_12_Stream练习

zz/2024/5/21 20:43:37
public class TestStreamApi04lianxi {List<Employee> emps = Arrays.asList(new Employee("张三", 18,9999.99, Status.FREE),new Employee("李四", 38,5555.99, Status.BUSY),new Employee("王五", 50,6666.66, Status.VOCATION),new Employee("赵六", 16,3333.33, Status.FREE),new Employee("田七", 10,7777.77, Status.BUSY),new Employee("田七", 16,8888.88, Status.VOCATION));/*** 1.给定一个数列表,返回一个由每个数的平方根构成的列表;*   给定【1,2,3,4,5】,应返回【1,4,9,16, 25】*/@Testpublic void test1(){List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);list.stream().map(e->e*e).collect(Collectors.toList()).forEach(System.out::print);}/*** 2.用 map 和 reduce 方法数一数流中有多少个Employee?*/@Testpublic void test2(){Integer reduce = emps.stream().map(e -> 1).reduce(0, (x, y) -> x + y);System.out.println(reduce);Optional<Integer> opt = emps.stream().map(e -> 1).reduce((x, y) -> Integer.sum(x, y));System.out.println(opt.get());opt = emps.stream().map(e -> 1).reduce(Integer::sum);System.out.println(opt.get());long count = emps.stream().count();System.out.println(count);System.out.println(reduce);}}
package com.Stream;import org.junit.Before;
import org.junit.Test;
import java.util.*;
import java.util.stream.Collectors;/*** @Description: //TODO streamAPI 练习* @Author: LL* @Date: 2019/9/25*/
public class TestTransaction {List<Transaction> transactions = null;@Beforepublic void before(){Trader raoul = new Trader("Raoul","Cambridge");Trader mario = new Trader("Mario","Milan");Trader alan = new Trader("Alan","Cambridge");Trader brian = new Trader("Brian","Cambridge");transactions = Arrays.asList(new Transaction(brian,2011,300),new Transaction(raoul,2012,1000),new Transaction(raoul,2011,400),new Transaction(mario,2012,710),new Transaction(mario,2012,700),new Transaction(alan,2012,950));}//1.找出2011年发生的所有交易,并按交易额排序(从高到底)@Testpublic void test1(){transactions.stream().filter(e -> e.getYear()==2011).sorted((x, y) -> Integer.compare(x.getValue(), y.getValue()))
//                .sorted(Comparator.comparingInt(Transaction::getValue)).forEach(System.out::println);}//2.交易员都在哪些不同的城市工作过?@Testpublic void test2(){transactions.stream().map(x -> x.getTrader().getCity()).distinct().forEach(System.out::println);}//3.查找来自剑桥的交易员,并按姓名排序@Testpublic void test3(){transactions.stream().filter(t->"Cambridge".equals(t.getTrader().getCity())).map(Transaction::getTrader).sorted(Comparator.comparing(Trader::getName)).distinct().forEach(System.out::println);}//4.返回所有交易员的姓名字符串,并按字母顺序排序@Testpublic void test4(){transactions.stream().map(t -> t.getTrader().getName()).distinct().sorted().forEach(System.out::println);System.out.println("-------------------------------------");String s = transactions.stream().map(t -> t.getTrader().getName()).distinct().sorted().collect(Collectors.joining());System.out.println(s);System.out.println("-------------------------------------");String s2 = transactions.stream().map(t -> t.getTrader().getName()).distinct().sorted().reduce("",String::concat);System.out.println(s2);}//5.有没有交易员是在米兰工作的?@Testpublic void test5(){boolean b = transactions.stream().anyMatch(x -> x.getTrader().getCity().equals("Milan"));System.out.println(b);}//6.打印生活在剑桥的交易员的所有交易额@Testpublic void test6(){Optional<Integer> sum = transactions.stream().filter(t -> t.getTrader().getCity().equals("Cambridge")).map(Transaction::getValue).reduce(Integer::sum);System.out.println(sum.get());System.out.println("---------------------------------------");Integer sum2 = transactions.stream().filter(t -> t.getTrader().getCity().equals("Cambridge")).map(Transaction::getValue).mapToInt(t -> t).sum();
//                .collect(Collectors.summingInt(t -> t));System.out.println(sum2);}//7.所有交易中,最高的交易额是多少?@Testpublic void test7(){OptionalInt max = transactions.stream().map(Transaction::getValue).mapToInt(t -> t).max();System.out.println(max.getAsInt());System.out.println("-----------------------");Optional<Integer> max1 = transactions.stream().map(Transaction::getValue).max(Integer::compare);System.out.println(max1.get());}//8.找到交易额最小的交易@Testpublic void test8(){OptionalInt min = transactions.stream().map(Transaction::getValue).mapToInt(t -> t).min();transactions.stream().filter(t -> t.getValue() <= min.getAsInt()).forEach(System.out::println);System.out.println("---------------------");Optional<Transaction> min1 = transactions.stream().min(Comparator.comparingInt(Transaction::getValue));
//                .min(Comparator.comparingInt(x -> x.getValue()));
//                .min((x,y) -> Integer.compare(x.getValue(),y.getValue()));System.out.println(min1.get());}
}

 


http://www.ngui.cc/zz/2732100.html

相关文章

《并发编程的艺术》第一章 并发编程的挑战

1.1 上下文切换 CPU 通 过时间 片分配算法来循 环执 行任 务 &#xff0c;当前任 务执 行一个 时间 片后会切 换 到下一个 任务 。但是&#xff0c;在切 换 前会保存上一个任 务 的状 态 &#xff0c;以便下次切 换 回 这 个任 务时 &#xff0c;可以再加 载这 个任务 的状 态…

保障消息100%投递成功、消息幂等性

一、前言 我们小伙伴应该都听说够消息中间件MQ&#xff0c;如&#xff1a;RabbitMQ&#xff0c;RocketMQ&#xff0c;Kafka等。引入中间件的好处可以起到抗高并发&#xff0c;削峰&#xff0c;业务解耦的作用。 如上图&#xff1a; &#xff08;1&#xff09;订单服务投递消息…

MySQL高级之索引面试题分析

索引优化简单案例 单表 需求&#xff1a;查询category_id为1 且 comments大于1 的情况下&#xff0c;views最多的id 1、无索引的情况下&#xff1a; 很显然&#xff0c;type是ALL&#xff0c;即最坏的情况&#xff0c;Extra还出现了Using filesort也是最坏的情况&#xff0c…

消息不丢失

大家好&#xff0c;我是君哥。 引入消息队列可以方便地实现系统解耦、削峰填谷等作用。但是消息队列使用不当&#xff0c;可能会引起消息丢失&#xff0c;在一些消息敏感的业务场景下&#xff0c;这是不允许的。今天我们来聊一聊 RocketMQ 怎么做能确保消息不丢失。 1 Rocket…

Java设计模式之《享元模式》

享元模式&#xff1a;“享”就是分享之意&#xff0c;指一物被众人共享&#xff0c;而这也正是该模式的终旨所在。 享元模式有点类似于单例模式&#xff0c;都是只生成一个对象来被共享使用。这里有个问题&#xff0c;那就是对共享对象的修改&#xff0c;为了避免出现这种情况&…

Java设计模式之《抽象工厂模式》

一、概述 抽象工厂模式是对工厂方法模式的再升级&#xff0c;但是二者面对的场景稍显差别。 工厂方法模式面对的目标一般都是单类的&#xff0c;就比如《ava设计模式之《工厂方法模式》及使用场景》中所举的例子&#xff0c;目标就是桌子这一类商品。 如果是这样的呢&#x…

Java设计模式之《构建者模式》

构建者模式&#xff0c;又称建造者模式&#xff0c;将一部负责对象的构建分为许多小对象的构建&#xff0c;最后在整合构建的模式。 构建者模式一般用在构建流程或者组成部件固定的场合&#xff0c;将这些部件分开构建成为组件对象&#xff0c;再将这些组件对象整合成为目标对象…

续流二极管

1、作用 续流二极管在电路中起到续流的作用&#xff0c;用于保护元器件不被元件产生的感应电动势击穿或烧坏&#xff0c;一般选用快速恢复二极管和肖特基二极管。 2、连接方式 将二极管反向并联在产生感应电动势的元件两端&#xff08;电感线圈&#xff0c;继电器&#xff0…

整流二极管简单介绍

整流二极管 整流二极管(rectifier diode)一种用于将交流电转变为直流电的半导体器件。硅整流二极管的击穿电压高&#xff0c;反向漏电流小&#xff0c;高温性能良好 整流二极管主要用于各种低频半波整流电路&#xff0c;如需达到全波整流需连成整流桥使用。 正向导通状态&am…

信号参考面

什么是信号参考面 可以理解为是一个固定电平的平面,可以是“地平面”或“电源平面”。理解参考平面最直接的方法:构成电磁波传输的物理环境对表层走线来说,走线和下面的平面层共同构成了电磁波传输的物理环境,信号路径是表层走线,下面的平面就是参考路径,对PCB来说可以叫…
最新文章