第14章,lambda表达式与流处理例题

package 例题;import java.util.List;
import java.util.stream.Collectors;
import java.util. stream.Stream;public class 例题19 {		public static void main(String[] args){List<例题14> list = 例题14.get例题14List();//获取公共类的测试数据Stream<例题14> stream = list.stream();//获取集合流对象stream = stream.filter(people ->"女".equals(people.getSex()));//将所有女员工过滤出来stream = stream.limit(2);//取出前两位List<例题14> result = stream.collect(Collectors.toList());//将流对象重新封装成一个List集合for (例题14 emp : result) {//遍历结果集System.out.println(emp);//输出员工对象信息}}}

 

package 例题;
interface SayHi{	//创建打招呼接口String say();	//打招呼方法
}public class 例题1 {public static void main(String[] args) {//lambda表达式实现打招呼接口,返回抽象方法结果SayHi hi = ()->"你好啊!这是lambda表达式";System.out.println(hi.say());}}

 

package 例题;
interface cf{//构造方法接口例题10 action();//调用无参构造方法
}
public class 例题10 {//测试类public 例题10() {//无参构造方法System.out.println("调用无参构造方法");}public 例题10(int i) {//有参构造方法System.out.println("调用有参构造方法");}public static void main(String[] args) {cf a = 例题10::new;//引用测试类的构造方法例题10 b = a.action();//通过无参方法创建对象}}

 

package 例题;
interface cf2{//构造方法接口例题11 action(int i);//调用无参构造方法
}
public class 例题11 {//测试类public 例题11() {//无参构造方法System.out.println("调用无参构造方法");}public 例题11(int i) {//有参构造方法System.out.println("调用有参构造方法,参数为:" + i);}public static void main(String[] args) {cf2 a = 例题11::new;//引用测试类的构造方法例题11 b = a.action(123);//通过无参方法创建对象}}

 

package 例题;
interface ac<T>{//构造方法接口T action(int n);//抽象方法返回对象数组,方法参数决定数组个数
}
public class 例题12 {public static void main(String[] args) {ac<例题12[]> a = 例题12[]::new;//引用数组的构造方法例题12 arr[] = a.action(3);//接口创建数组,并指定数组个数arr[0] = new 例题12();//给数组元素实例化arr[1] = new 例题12();arr[2] = new 例题12();arr[3] = new 例题12();//如果调用或者给arr[3]赋值,代码则会抛出数组下标越界异常}}

 

package 例题;import java.util.function.Function;public class 例题13 {//创建Function接口对象,参数类型是Integer[],返回值是StringFunction<Integer[], String> f = (n)->{StringBuilder str = new StringBuilder();//创建字符序列for(Integer num : n) {//遍历参数数组str.append(num);//字符序列添加数组元素str.append('.');//字符序列添加字符'.'}str.deleteCharAt(str.length()-1);//删除末尾的'.'return str.toString();//返回字符串};public static void main(String[] args) {// TODO Auto-generated method stubInteger[] ip = {192, 168, 1, 1};//带处理的数组例题13 d = new 例题13();System.out.println(d.f.apply(ip));//输出处理结果}}

 

package 例题;import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题28{public static void main(String[] args) {// TODO Auto-generated method stubList<例题14> list = 例题14.get例题14List();Stream<例题14>stream=list.stream();Map<String,List <例题14>> map = stream.collect(Collectors.groupingBy(例题14::getDept));Set<String>depts=map.keySet();for(String dept:depts) {System.out.println(dept+"员工信息如下:");List<例题14>temp=map.get(dept);for(例题14 e:temp) {System.out.println(e);}System.out.println();}}}

 

package 例题;import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题29 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List(); // 获取公共类的测试数据Stream<例题14> stream = list.stream(); // 获取集合流对象// 一级分组规则方法,按照员工部门进行分级Function<例题14, String> deptFunc = 例题14::getDept;// 二级分组规则方法,按照员工部门进行分级Function<例题14, String> sexFunc = 例题14::getSex;// 将流中的数据进行二级分组,先对员工部分进行分组,在对员工性别进行分组Map<String, Map<String, List<例题14>>> map = stream.collect(Collectors.groupingBy(deptFunc, Collectors.groupingBy(sexFunc)));// 获取Map的中的一级分组键集合,也就是部门名称集合Set<String> deptSet = map.keySet();for (String deptName : deptSet) { // 遍历部门名称集合// 输出部门名称System.out.println("【" + deptName + "】 部门的员工列表如下:");// 获取部门对应的二级分组的Map对象Map<String, List<例题14>> sexMap = map.get(deptName);// 获得二级分组的键集合,也就是性别集合Set<String> sexSet = sexMap.keySet();for (String sexName : sexSet) { // 遍历部门性别集合// 获取性别对应的员工集合List<例题14> emplist = sexMap.get(sexName);System.out.println("    【" + sexName + "】 员工:"); // 输出性别种类for (例题14 emp : emplist) {// 遍历员工集合System.out.println("        " + emp); // 输出对应员工信息}}}}
}

package 例题;import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
public class 例题26 {public static void main(String[] args) {// 获取公共类的测试数据List<例题14> list = 例题14.get例题14List();Stream<例题14> stream = list.stream();             // 获取集合流对象// 过滤出21岁的员工stream = stream.filter(people -> people.getAge() == 21);Optional<例题14> young = stream.findFirst();      // 获取第一个元素例题14 emp = young.get();                           // 获取员工对象System.out.println(emp);                              // 输出结果}
}

 

package 例题;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题16 {//输出集合元素static void ph(String mes, List list) {System.out.println(mes);//输出文字信息list.stream().forEach(n->{//使用forEach方法遍历集合并打印元素System.out.println(n + "");});System.out.println();}public static void main(String[] args) {// 创建空数组List<Integer> list = new ArrayList<>();for(int i = 1; i <= 10; i++) {//从1循环到10list.add(i);//从集合赋值}ph("集合原有元素:" ,list);//输出集合元素Stream<Integer> stream = list.stream();//获取集合流对象//将集合中的所有奇数过滤出来,把过滤结果重新赋值给流对象stream = stream.filter(n -> n % 2 == 1);//将流对象重新封装成一个List集合List<Integer> re = stream.collect(Collectors.toList());ph("过滤之后的集合元素:" , re);//输出集合元素}}

 

package 例题;import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题17 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();//获取公共类的测试数据Stream<例题14> stream = list.stream();//获取集合流对象stream = stream.filter(people->people.getAge()>30);//将年龄大于30岁的员工过滤出来List<例题14> rt = stream.collect(Collectors.toList());//将流对象重新封装成一个List集合for(例题14 emp : rt) {//遍历结果集System.out.println(emp);//输出员工对象信息}}}

 

package 例题;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题18 {static void ph(String me, List list) {System.out.println(me);list.stream().forEach(n->{System.out.print(n+"");});System.out.println();}public static void main(String[] args) {List<Integer> list = new ArrayList<Integer>();list.add(1);list.add(2);list.add(2);list.add(3);list.add(3);ph("去重前:",list);Stream<Integer> stream = list.stream();stream = stream.distinct();List<Integer> rt = stream.collect(Collectors.toList());ph("去重后:" ,rt);}}

 

package 例题;
interface Addition{//加法接口int add(int a,int b);//加法抽象方法
}
public class 例题2 {public static void main(String[] args) {//lambda表达式实现加法接口,返回参数相加结果Addition ad = (x,y)->x+y;int result = ad.add(15, 16);System.out.println("相加结果; " + result);}}

 

package 例题;import java.util.List;
import java.util.stream.Collectors;
import java.util. stream.Stream;
public class 例题20 {   public static void main(String[] args) {// TODO Auto-generated method stubList<例题14> list = 例题14.get例题14List();//获取公共类的测试数据Stream<例题14> stream = list.stream();//获取集合流对象stream = stream.filter(people ->"男".equals(people.getSex()));//将所有男员工过滤出来stream = stream.skip(2);//跳过前两位List<例题14> result = stream.collect(Collectors.toList());//将流对象重新封装成一个List集合for (例题14 emp : result) {//遍历结果集System.out.println(emp);//输出员工对象信息}}}

 

package 例题;import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;public class 例题21 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();          // 获取公共类的测试数据Stream<例题14> stream = list.stream();              // 获取集合流对象// 将所有开发部的员工过滤出来stream = stream.filter(people -> "开发部".equals(people.getDept()));// 将所有员工的名字映射成一个新的流对象Stream<String> names = stream.map(例题14::getName);// 将流对象重新封装成一个List集合List<String> result = names.collect(Collectors.toList());for (String emp : result) {                              // 遍历结果集System.out.println(emp);                             // 输出所有姓名}}
}

 

package 例题;import java.util.List;
import java.util.stream.DoubleStream;
import java.util.stream.Stream;
public class 例题22 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();      // 获取公共类的测试数据Stream<例题14> stream = list.stream();          // 获取集合流对象// 将所有开发部的员工过滤出来stream = stream.filter(people -> "销售部".equals(people.getDept()));// 将所有员工的名字映射成一个新的流对象DoubleStream salarys = stream.mapToDouble(例题14::getSalary);// 统计流中元素的数学总和double sum = salarys.sum();System.out.println("销售部一个月的薪资总额:"+sum);}
}

 

package 例题;import java.util.List;
import java.util.stream.Stream;public class 例题23 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();       // 获取公共类的测试数据Stream<例题14> stream = list.stream();           // 获取集合流对象// 判断所有员工的年龄是否都大于25boolean result = stream.allMatch(people -> people.getAge() > 25);System.out.println("所有员工是否都大于25岁:" + result);  // 输出结果}
}

 

package 例题;import java.util.List;
import java.util.stream.Stream;
public class 例题24 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();     // 获取公共类的测试数据Stream<例题14> stream = list.stream();         // 获取集合流对象// 判断员工是否有的年龄大于等于40boolean result = stream.anyMatch(people -> people.getAge() >= 40);System.out.println("员工中有年龄在40或以上的吗?:" + result); // 输出结果}
}

 

package 例题;import java.util.List;
import java.util.stream.Stream;
public class 例题25 {public static void main(String[] args) {List<例题14> list = 例题14.get例题14List();        // 获取公共类的测试数据Stream<例题14> stream = list.stream();            // 获取集合流对象// 判断公司中是否不存在薪资小于2000的员工?boolean result = stream.noneMatch(people -> people.getSalary() <2000 );System.out.println("公司中是否不存在薪资小于2000元的员工?:" + result);// 输出结果}
}

 

package 例题;interface CG3{String ck(int a);
}public class 例题3 {public static void main(String[] args) {// lambda表达式//a为参数CG3 c = (a) -> {//判断语句if(a >= 90 && a <= 100) {return "成绩为优";}if(a >= 80 && a <= 90) {return "成绩为良";}if(a >= 60 && a <= 80) {return "成绩为中";}if(a >= 0 && a <= 60) {return "成绩为差";}return "成绩无效";};//调用ck方法传入参数进行判断,输出结果System.out.println(c.ck(50));}}

 

package 例题;interface CG4{//测试接口void ck();//测试方法
}public class 例题4 {public static void main(String[] args) {// 创建局部变量int v = 100;//实现测试接口CG4 c = () -> {//使用局部变量赋值int num = v - 90;//更改局部变量,此处报错,无法编译v = 12;};}}

 

package 例题;
//接口
interface CG5{String ck();
}public class 例题5 {//成员变量int v = 100;//成员方法public void acto() {//lambda补全方法体CG5 c = () ->{//局部变量v = 10;return null;};System.out.println("运行方法前v=" + v);c.ck();System.out.println("运行方法后v=" + v);}public static void main(String[] args) {// TODO Auto-generated method stub例题5 l = new 例题5();l.acto();}}

 

package 例题;import java.util.Scanner;interface An{	//防沉迷接口boolean ck(int age)throws UnderAgeException;//抽象检查方法,抛出用户未成年异常
}class UnderAgeException extends Exception{	//自定义异常public UnderAgeException(String message) {//有参构造方法super(message);//调用原有父类构造方法}
}public class 例题6 {public static void main(String[] args) {//lambda 表达式创建An对象,默认抛出原有异常An a = (b)->{if(b<18) {//如果年龄小于18throw new UnderAgeException("未满18周岁,开启防沉迷模式!");//抛出异常}else {return true;//返回通过}};//控制台扫描器Scanner sc = new Scanner(System.in);System.out.println("请输入年龄:");//提示int age = sc.nextInt();//获取用户输入的年龄try {			//前面抛出过异常,此处捕捉if(a.ck(age)) {//验证年龄System.out.println("欢迎━(*`∀´*)ノ亻!进入XX世界");}}catch(UnderAgeException e) {System.out.println(e);//打印异常}sc.close();//关闭扫描器}
}

 

package 例题;//接口
interface Add{int add(int a, int b);
}public class 例题7 {//静态方法static int add1(int x, int w){return x + w;}public static void main(String[] args) {//引用静态方法Add a1 = 例题7 :: add1;System.out.println("静态方法的引用:" + a1.add(8, 5));}}

 

package 例题;import java.text.SimpleDateFormat;
import java.util.Date;//创建接口
interface Dat{String method(Date date);}public class 例题8 {//创建方法public String format(Date date) {//创建日期格式化对象并设置格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//返回格式化结果return sdf.format(date);}public static void main(String[] args) {// 创建对象例题8 l1 = new 例题8();//利用对象引用方法Dat d1 = l1 :: format;//创建时间对象Date date = new Date();System.out.println("默认格式:" + date);System.out.println("接口输出的格式:" + d1.method(date));}}

 

package 例题;import java.util.HashSet;interface Pa<T>{//测试接口int md(T[] t);//抽象方法
}class PaDemo{//测试类//静态方法,使用泛型参数,在方法名之前定义泛型。此方法用于查找数组中的重复元素个数static public <T> int rt(T[] t) {int ah = t.length;//记录数组长度java.util.HashSet<T> set = new HashSet<>();//创建哈希集合for(T tmp : t) {//遍历数组set.add(tmp);}return ah - set.size();//返回数组长度与集合长度的差}
}
public class 例题9 {public static void main(String[] args) {Integer a[] = {1, 1, 2, 3, 1, 5, 6, 1, 8, 8};String s[] = {"王", "李", "赵", "陈", "李", "孙", "张"};//创建接口对象,integer作为泛型,引人PaDemo类的静态方法,方法名要定义泛型Pa<Integer> p1 = PaDemo::<Integer>rt;System.out.println("整数数组重复元素个数:" + p1.md(a));//调用接口方法创建接口对象,String作为泛型,引人PaDemo类的静态方法//方法名不定义泛型,则默认使用接口已定义好的泛型Pa<String> p2 = PaDemo::rt;System.out.println("字符串数组重复元素个数:" + p2.md(s));}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/187176.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之访问者模式

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概5000多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…

基于ubuntu1604的ROS安装

不同版本的Ubuntu都有对应的ROS版本&#xff0c;不要强行安装不对应的版本&#xff0c;否则遇到问题会很难找到解决方法。此教程也只是基于Ubuntu1604和kinetic版本的ROS。 一、基本流程 以下命令仅记录执行顺序&#xff0c;不要无脑复制执行&#xff0c;重在理解 #基本更新…

​软考-高级-系统架构设计师教程(清华第2版)【第2章 计算机系统基础知识-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第2章 计算机系统基础知识-思维导图】 课本里章节里所有蓝色字体的思维导图

【机器学习】Kmeans聚类算法

一、聚类简介 Clustering (聚类)是常见的unsupervised learning (无监督学习)方法&#xff0c;简单地说就是把相似的数据样本分到一组&#xff08;簇&#xff09;&#xff0c;聚类的过程&#xff0c;我们并不清楚某一类是什么&#xff08;通常无标签信息&#xff09;&#xff0…

AIGC视频生成/编辑技术调研报告

人物AIGC&#xff1a;FaceChain人物写真生成工业级开源项目&#xff0c;欢迎上github体验。 简介&#xff1a; 随着图像生成领域的研究飞速发展&#xff0c;基于diffusion的生成式模型取得效果上的大突破。在图像生成/编辑产品大爆发的今天&#xff0c;视频生成/编辑技术也引起…

HTML的初步学习

HTML HTML 描述网页的骨架, 标签化的语言. HTML 的执行是浏览器的工作,浏览器会解析 html 的内容,根据里面的代码,往页面上放东西,浏览器的工作归根结底,还是以汇编的形式在CPU上执行. 浏览器对于html语法格式的检查没有很严格,即使你写的代码有一些不合规范之处,浏览器也会尽可…

打开ps提示,计算机中丢失d3dcompiler_47.dll怎么解决?

“d3dcompiler_47.dll丢失5个解决办法”。相信很多同事在工作或者娱乐的过程中&#xff0c;都遇到过这个错误提示。那么&#xff0c;究竟什么是d3dcompiler_47.dll文件&#xff1f;为什么会丢失呢&#xff1f;又该如何解决这个问题呢&#xff1f;接下来&#xff0c;我将为大家详…

angular学习笔记

HTML绑定 形式&#xff1a;{{ 变量名 }} {{}}内部可以是 算数运算比较运算逻辑运算三目运算调用函数 {{}}内部不可以是 创建对象&#xff1a;不可以newJSON序列化 属性绑定 形式1&#xff1a;[属性名]“变量名” 形式2&#xff1a;属性名“{{变量名}}” <div [title…

ClickHouse介绍和使用

ClickHouse介绍和使用 1. 简介2. ClickHouse特点3. 数据类型3.1. 整型3.2. 浮点型3.3. Decimal型3.4. 布尔型3.5. 字符串3.6. 枚举类型3.7. 时间类型 4. 表引擎4.1. TinyLog4.2. Memory4.3. MergeTree4.3.1. partition by分区&#xff08;可选&#xff09;4.3.2. primary key 主…

数据分析是什么?

第一章- 数据分析是什么 数据分析是指 根据分析目的&#xff0c;用适当的分析方法及工具&#xff0c;对数据进行分析&#xff0c;提取有价值的信息&#xff0c;形成有效结论的过程。 数据分析的作用 通过观察数据&#xff0c;知道当前发生什么&#xff1f;通过具体的数据拆解…

【论文阅读】Progressive Spatio-Temporal Prototype Matching for Text-Video Retrieval

资料链接 论文链接&#xff1a;https://openaccess.thecvf.com/content/ICCV2023/papers/Li_Progressive_Spatio-Temporal_Prototype_Matching_for_Text-Video_Retrieval_ICCV_2023_paper.pdf 代码链接&#xff1a;https://github.com/imccretrieval/prost 背景与动机 文章发…

代码随想录算法训练营Day 47 || 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

198.打家劫舍 力扣题目链接(opens new window) 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系…

Qframework 中超级方便的kitres

using QFramework; using System.Collections; using System.Collections.Generic; using UnityEngine;public class TestResKit : MonoBehaviour {ResLoader mResLoader ResLoader.Allocate();private void Awake(){}/// <summary>/// 每一个需要加载资源的单元(脚本,界…

【Unity之UI编程】在Unity中如何打图集,来降低DrowCall

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…

pytest 的使用===谨记

发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法&#xff08;测试类不能带有__init__方法&#xff09; c) 模块中test开头的函数&#xff08;可以不在class中&#xff09; 注意点&#xff1a; pytest是以方法为单位发现用例的&#xff0c;你…

摔杯算法(要求用最少的测试次数找出恰巧会使杯子破碎的楼层。)

题目: 一种杯子&#xff0c;若在第N层被摔破&#xff0c;则在任何比N高的楼层均会破&#xff1b;若在第M层不破&#xff0c;则在任何比M低的楼层均不会破。给你两个这样的杯子&#xff0c;让你在100层高的楼层中测试&#xff0c;要求用最少的测试次数找出恰巧会使杯子破碎的楼层…

vue:实现顶部消息横向滚动通知

前言 最近有个需求&#xff0c;是在系统顶部展示一个横向滚动的消息通知。需求很简单&#xff0c;就是消息内容从右往左一直滚动。 效果如下&#xff1a; 因为我的需求很简单&#xff0c;功能就这样。如果有什么其他需求&#xff0c;可以再继续修改。 代码 使用 <noti…

数据中台之数据分析

效果界面 技术方案 Notebook集成 在您的数据平台上,创建一个能够与Jupyter Notebook通讯的服务。通过Jupyter Notebook的HTTP API与Notebook实例进行交互,执行代码、获取输出等。用户界面 在数据开发/数据分析的代码框右上方,添加一个机器人样式的图标,用户点击后可以调起…

Ubuntu 安装常见问题

1. 安装oh my zsh 搜狗输入法不能用 vim /etc/environmentexport XIM_PROGRAMfcitx export XIMfcitx export GTK_IM_MODULEfcitx export QT_IM_MODULEfcitx export XMODIFIERS“imfcitx” export LANG“zh_CN.UTF-8”配置完后重启&#xff0c;稍等一会&#xff0c;右上角会有个…

Linux--vim

文章目录 Vim的介绍Vim的几种模式命令模式下的基本操作批量化注释Vim的简单配置使用插件 Vim的介绍 Vim是一个强大的文本编辑器&#xff0c;是从vi编辑器发展而来的&#xff0c;在vi编辑器的基础上进行了改进和拓展&#xff0c;具有强大的特性和功能。 Vim是一个自由开源软件&…