Java8lambda和Java8Stream

匿名函数 为了简化Java中的匿名内部类

事件监听 写一个类 实现ActionListener 接口(外部类)

内部类

Lambda 表达式是一个匿名函数,我们可以把 lambda 表达式理解为一段

可以传递的代码(将代码段像数据一样传递)。使用它可以写出更简洁, 更灵

活的代码。作为一种更紧凑的代码风格,使 java 语言的表达式能力得到的提升。

Lambda 表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为

常规的代码,因此你可以使用更少的代码来实现同样的功能。

public class Demo3 {public static void main(String[] args) {ArrayList<String> arrayList=new ArrayList<>();arrayList.add("c");arrayList.add("b");arrayList.add("a");//arrayList.sort(new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}});//arrayList.sort((a,b)->{return a.compareTo(b);});System.out.println(arrayList);}
}
@FunctionalInterface
public interface Demo2 {int add(int o1, int o2);
}
//@FunctionalInterface 单接口抽象方法,只能存在一个抽象方法

Java8Stream

可以将它看作遍历数据集的高级迭代器

处理数据集合(数组,集合类)‘

对数组,集合类 进行各种操作(过滤,排序.......)

stream处理数据过程

数组/集合类--->流-->各种操作(排序,过滤)-->结果(数组/集合类)

数组和集合类更偏向于存储数据(各种结构)

stream 更偏向于数据操作

流操作:

1.获取流,把集合/数组转换为stream对象

2.流的操作分为:

中间操作:流的各种数据处理

终端操作:把流转换为最终结果(数组/集合/单值)

filter();//过滤流中的某些元素
sorted();//自然排序,流中元素需实现Comparable接口
distinct;//去除重复元素
limit(n);//获取n个元素
skip();//跳过n个元素,配合limit(n)可实现分页
forEach();//遍历流中的元素

public class Demo2 {public static void main(String[] args) {//集合ArrayList<Integer> arrayList=new ArrayList<>();arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);Stream<Integer> stream =arrayList.stream();arrayList.stream().skip(2).limit(2).sorted((o1,o2)->{return o2-o1;}).forEach((e)->{System.out.println(e);});//数组Integer [] array=new Integer[]{1,2,3,4};Stream<Integer> stream1= Arrays.stream(array);//将数组转为流Arrays.stream(array).skip(2).limit(2).forEach((e)->{System.out.println(e);});Arrays.stream(array).filter((e)->{return e<5;}).sorted((o1,o2)->{return o2-o1;}).distinct().forEach((e)->{System.out.println(e);});}
}

终端操作:

Min();返回流中的最小值

Max();返回流中的最大值

count();返回流中元素的个数

reduce();所有元素求和

anyMatch();接收一个predicate函数,只要流中有一个元素满足条件则返回true,否则返回false

allMatch();接收一个predicate函数,当流中每个元素都满足条件则返回true,否则返回false

findFirst();返回流中的第一个元素

		Integer [] array=new Integer[]{1,2,3,2,4};
//Min();返回流中的最小值Integer result = Arrays.stream(array).distinct().min((o1,o2)->{return o1-o2;}).get();System.out.println(result);
//Max();返回流中的最大值Integer integer=Arrays.stream(array).distinct().max((o1,o2)->{return o1-o2;}).get();System.out.println(integer);
//count();返回流中元素的个数long integer1=Arrays.stream(array).distinct().count();System.out.println(integer1);
//reduce();所有元素求和Integer integer2=Arrays.stream(array).distinct().reduce((a,b)->{return a+b;}).get();System.out.println(integer2);
//anyMatch();接收一个predicate函数,只要流中有一个元素满足条件则返回true,否则返回falseboolean integer3=Arrays.stream(array).anyMatch((e)->{return e>2;});System.out.println(integer3);
//allMatch();接收一个predicate函数,当流中每个元素都满足条件则返回true,否则返回falseboolean integer4=Arrays.stream(array).allMatch((e)->{return e>2;});System.out.println(integer4);
//findFirst();返回流中的第一个元素Integer integer5=Arrays.stream(array).distinct().sorted((o1,o2)->{return o2-o1;}).findFirst().get();System.out.println(integer5);

collect();将元素存储到集合中

map();将对象中的某个属性映射为一个新元素

toArray();将元素存储到数组中

 ArrayList<Student> arrayList=new ArrayList<>();Student student1=new Student(100, "张三1", "男");Student student2=new Student(101, "张三2", "男");Student student3=new Student(102, "张三3", "男");Student student4=new Student(103, "张三4", "男");Student student5=new Student(104, "张三5", "男");arrayList.add(student1);arrayList.add(student2);arrayList.add(student3);arrayList.add(student4);arrayList.add(student5);List<Student> list= arrayList.stream().sorted((stu1, stu2)->{return stu1.getNum()-stu2.getNum();}).collect(Collectors.toList());System.out.println(list);System.out.println("------------------------");Object[] a = arrayList.stream().sorted((stu1, stu2)->{return stu1.getNum()-stu2.getNum();}).collect(Collectors.toList()).toArray();System.out.println(Arrays.toString(a));System.out.println("----------------------------");List<Integer> b=arrayList.stream().map(Student::getNum).collect(Collectors.toList());System.out.println(b);System.out.println("----------------------------");System.out.println(arrayList.stream().collect(Collectors.toMap(Student::getNum, Student::getName)));

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

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

相关文章

机器学习实验------softmax回归

第1关:softmax回归原理 任务描述 本关任务:使用Python实现softmax函数。 #encoding=utf8 import numpy as npdef softmax(x):input:x(ndarray):输入数据,shape=(m,n)output:y(ndarray):经过softmax函数后的输出shape=(m,n)#********* Begin *********#x -= np.max(x, axis …

C++的模板(七):左值强制类型转换

C中有个特殊指针类型&#xff0c;就是指向数据成员的指针。这个数据成员的指针是可以提取出来的。如: class Whatever { public:int x;int z; };int Whatever::*mp; mp &Whatever::x;如果数据的访问权限是private&#xff0c;则这样不可以。但可以通过模板的办法挑出来&…

抖音运营_如何开抖店

截止20年8月&#xff0c;抖音的日活跃数高达6亿。 20年6月&#xff0c;上线抖店 &#xff08;抖音官方电商&#xff09; 一 抖店的定位和特色 1 一站式经营 帮助商家进行 商品交易、店铺管理、客户服务 等全链路的生意经营 2 多渠道拓展 抖音、今日头条、西瓜、抖音火山版…

科兴未来|2024年诸暨市海内外高层次人才创业大赛

为深入实施人才强市、创新强市首位战略,加快人才链、产业链、创新链深度融合,努力开创“诸才云集”生动局面,奋力打造新时代共同富裕新高地,高水平谱写社会主义现代化建设诸暨篇章,推动诸暨实现高水平建设&#xff0c;构建全新人才创业创新生态体系&#xff0c;助力人才流入诸暨…

【Python】用于发送电子邮件的标准库smtplib和构建邮件主体、添加附件、设置收件人的email

欢迎来到《小5讲堂》 这是《Python》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 插件介绍邮件代码扩展知识点文章推荐 插件介绍 smtplib 是 Pytho…

海外媒体发稿的关键步骤和投稿策略:如何撰写高质量的新闻稿?国外软文发布平台有哪些?

发布国外新闻稿件是一个涉及多步骤的过程&#xff0c;旨在确保您的新闻稿能够有效覆盖目标受众。以下是一些关键步骤和实用的技巧&#xff0c;帮助你实现海外媒体发稿。 1. 明确目标和受众 首先&#xff0c;明确您发布新闻稿的目标&#xff0c;是为了增加品牌曝光、推出新产品…

惊呆了!企业数字化转型竟如工厂生产?

在众多使用蚓链数字化生态系统解决方案实现数字化转型的企业&#xff0c;你能想象吗&#xff1f;如今的企业数字化转型&#xff0c;就如同一家工厂的生产过程&#xff01;数据成为了原材料&#xff0c;而数据资源则是场景化的零件&#xff0c;最终生产出满足市场需求的数据产品…

基于Kafka的日志采集

目录 前言 架构图 资源列表 基础环境 关闭防护墙 关闭内核安全机制 修改主机名 添加hosts映射 一、部署elasticsearch 修改limit限制 部署elasticsearch 修改配置文件 启动 二、部署filebeat 部署filebeat 添加配置文件 启动 三、部署kibana 部署kibana 修…

2024-5-24

今日安排&#xff1a; 继续审计 nf_tables 源码 && iptables 相关学习♥♥♥♥♥复现 CTF 相关题目♥♥♥♥学习 winpwn♥♥♥♥mount 的使用&#xff0c;学习 namespace (昨昨昨昨昨昨昨昨昨昨昨昨昨昨天残留的任务)&#xff08;&#xff1a;看我能搁到什么时候♥♥♥…

21-信号集处理函数

屏蔽信号集 屏蔽某些信号 手动自动 未处理信号集 信号如果被屏蔽&#xff0c;则记录在未处理信号集中 非实时信号&#xff08;1~31&#xff09;&#xff0c;不排队&#xff0c;只留一个实时信号&#xff08;34~64&#xff09;&#xff0c;排队&#xff0c;保留全部 信号集…

springmvc中HandlerMapping是干什么用的

HandlerMapping处理器映射器 作用是根据request找到相应的处理器Handler和Interceptors&#xff0c;然后封装成HandlerExecutionChain对象返回 HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception; 实现类 HandlerMapping帮助DispatcherServlet进…

【大数据面试题】30 Kafka如何保证数据可靠性

一步一个脚印&#xff0c;一天一道面试题。 数据可靠性一直是各个技术都需要的一个特性。不能在使用过程中数据被错误消费&#xff0c;多消费少消费&#xff0c;或者直接漏了数据。那就来看看热门消息队列 Kafka 在数据可靠性方面做了些什么。 Acknowledgment&#xff08;ACK&…

【AD21】BOM表文件的输出

BOM表文件通常发给采购&#xff0c;采购可以购买BOM表中所需的元器件。 在菜单栏中点击报告->Bill of Materials。 在以下界面&#xff0c;点击Columns&#xff0c;对输出的BOM表中一些说明进行不显示&#xff0c;可以不显示Description和LibRef。值&#xff0c;位号&#…

文心智能体【焦虑粉碎机】——帮你赶走“坏”情绪

目录&#xff1a; 引言1.登录 文心智能体平台2.创建智能体3.配置智能体&#x1f337; 头像设置&#x1f337; 名称设置&#x1f337; 简介设置&#x1f337;指令设置&#x1f337; 开场白设置&#x1f337; 引导示例设置 4.使用智能体 引言 随着ChatGPT的爆火&#xff0c;人工智…

【Python】 掌握 Flask 请求数据获取的艺术

基本原理 在Web开发中&#xff0c;Flask是一个用Python编写的轻量级Web应用框架。它被广泛用于快速开发简单的Web应用。当用户通过浏览器或其他客户端向服务器发送请求时&#xff0c;Flask需要能够接收和解析这些请求中的数据。这些数据可以是GET请求的查询字符串、POST请求的…

【3GPP核心网】【4G】LTE中S1-MME流程字段分析(四)

1. 欢迎大家订阅和关注,精讲3GPP通信协议(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 承接上文 目录 15. S1 切入(23.401 5.5.2) 15.1 UTRAN Iu to E-UTRAN 15.2 GERAN Gb to E-UTRAN 16. S1切出(23.401 5.5.2) 16.1 E-UTRAN to UTRAN Iu 16.2 E-UTRAN…

Python列表推导式的实用指南

Python列表推导式的实用指南 一、引言 在Python编程中&#xff0c;列表推导式&#xff08;List Comprehension&#xff09;是一种简洁而强大的构造列表的方式。它允许我们在一行代码中&#xff0c;通过循环和条件语句快速生成列表。列表推导式不仅提高了代码的可读性和可维护…

【算法】分治 - 快速排序

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、颜色分类二、排序数组三、数组中的第k个数四、最小的k个数总结 引言 本节主要介绍快速排序&#xf…

swust oj 1012: 哈希表(链地址法处理冲突)

直接采用二维数组模拟实现 #include <iostream> using namespace std; const int N 100; int arr[N][N]; int point[N];//计数int main() {int m, n,data;cin >> m >> n;for (int i 0; i < n; i){cin >> data;int key data % m;arr[key][point[…

热点代码的优化技术

点代码的优化技术主要由Java虚拟机&#xff08;JVM&#xff09;中的即时编译器&#xff08;JIT&#xff09;来实现。以下是热点代码优化的一般流程和技术&#xff1a; 1、性能分析&#xff08;Profiling&#xff09;&#xff1a; JVM会跟踪应用程序的执行信息&#xff0c;收集…