java集合提取最小的日期_提取Java集合的元素-Java 8方法

java集合提取最小的日期

我们都广泛使用了Collection类,例如List,Map及其派生版本。 每次使用它们时,我们都必须遍历它们以找到某个元素或更新这些元素,或者找到匹配某个条件的不同元素。 考虑如下所示的人员列表:

List<Person> personList = new ArrayList<>();
personList.add(new Person('Virat', 'Kohli',22));
personList.add(new Person('Arun', 'Kumar',25));
personList.add(new Person('Rajesh', 'Mohan', 32));
personList.add(new Person('Rahul', 'Dravid', 35));

为了找出年龄大于30岁的所有Person实例,我们可以这样做:

List<Person> olderThan30OldWay = new ArrayList<>();
for ( Person p : personList){if ( p.age >= 30){olderThan30OldWay.add(p);}
}
System.out.println(olderThan30OldWay);

这给了我输出为:

[Rajesh Mohan, 32, Rahul Dravid, 35]

该代码易于编写,但是是否更冗长一些,尤其是在迭代部分? 我们为什么要迭代? 如果有一个API可以迭代内容并给我们最终结果,即我们给出源List并使用一系列方法调用来获得我们正在寻找的结果List,那不是很酷吗? 是的,这在其他语言(例如Scala,Groovy)中是可行的,它们支持传递闭包,也支持内部迭代。 但是Java开发人员有解决方案吗? 是的,通过引入对Lambda Expressions(closures)的支持和增强的Collection API来利用lambda Expression支持,可以解决这个确切的问题。 不幸的消息是它将成为Java 8的一部分,并且将需要一些时间才能进入主流开发。

利用Java 8对上述情况的增强

正如我在增强Collections API以支持Lambda Expression之前所说的那样,可以在这里阅读有关它的更多信息。 JDK团队没有将所有新的API添加到Collection类中,而是创建了一个称为“ Stream”的新概念,并在该类中添加了大多数API。 “流”是从创建它的集合中获得的一系列元素。 要了解有关Stream类起源的更多信息,请参考此文档 。 为了实现从使用Java 8中的增强功能开始的示例,我们将使用一些新的API,即:stream(),filter(),collect(),Collectors.toCollection()。
stream() :使用在其上调用此API的集合来创建Stream类的实例。
filter() :此方法接受一个lambda表达式,该表达式接受一个参数并返回一个布尔值。 该lambda表达式被编写为实现Predicate类的替代。 collect() :此方法有2个重载版本。 我在这里使用的是一个Collector的实例。 此方法获取流的内容并构造另一个集合。 此构造逻辑由收集器定义。 Collectors.toCollection() : 收藏家是一个工厂收集 。 并且toCollection()采用Lambda表达式/方法引用,该引用应返回Collection类的任何派生类的新实例。

简要介绍所使用的API之后,让我展示与第一个代码示例等效的代码:

List<Person> olderThan30 = //Create a Stream from the personListpersonList.stream().//filter the element to select only those with age >= 30filter(p -> p.age >= 30).//put those filtered elements into a new List.collect(Collectors.toCollection(() -> new ArrayList<Person>()));
System.out.println(olderThan30);

上面的代码同时使用了内部迭代和lambda表达式,使其直观,简洁且令人耳目一新。 如果您不熟悉Lambda表达式的概念,请查看我以前的文章 ,其中简要介绍了Lambda表达式。

参考:从Javas 合作伙伴 Mohamed Sanaulla的Experiences Unlimited博客中提取Java集合的元素-Java 8方法 。

翻译自: https://www.javacodegeeks.com/2013/03/extracting-the-elements-of-the-java-collection-the-java-8-way.html

java集合提取最小的日期

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

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

相关文章

php中的空转为什么意思,php 长期更

php 语法&#xff1a;换行&#xff1a;echo"";echo;"."会连接字符串123.456""等号只判断左右两边的最终结果&#xff0c;而不判断数据类型。""全等于首先判断两边的数据类型是否一致&#xff0c;接着判断最终结果是否一致。“||”“|”…

apache 隐藏php版本,PHP+Apache环境中怎么隐藏Apache版本

PHPApache环境中怎么隐藏Apache版本发布时间&#xff1a;2021-02-08 09:57:43来源&#xff1a;亿速云阅读&#xff1a;104作者&#xff1a;小新小编给大家分享一下PHPApache环境中怎么隐藏Apache版本&#xff0c;相信大部分人都还不怎么了解&#xff0c;因此分享这篇文章给大家…

使用Okta的单点登录保护您的Vert.x服务器

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 Vert.x是Spring生态系统中增长最快的元素之一&#xff0c;保护Vert.x服务器可能是一个…

cas java web,CAS干单点登陆(SSO)——集成Java Web 项目

在应用WEB-INF/web.xml添加filter的内容&#xff0c;效果如下所示org.jasig.cas.client.session.SingleSignOutHttpSessionListenerCAS Single Sign Out Filterorg.jasig.cas.client.session.SingleSignOutFilterCAS Single Sign Out Filter/*CASFilterorg.jasig.cas.client.au…

oracle的dtime,Oracle时间函数

YYYY年 Q季度MM月 month月WW当年第几周 W本月第几周DDD 当年第几天 DD当月第几天 D当周内第几天 DY当周内星期几 day当周内星期几HH或HH12:12进制小时数 HH24:24小时制MI:分钟数(0&#xff5e;59) SS:秒数(0&#xff5e;59)1、Sysdate:当前日期和时间Select sysdate from dual2…

Apache Kafka简介

什么是Apache Kafka&#xff1f; Apache Kafka是一个分布式流系统&#xff0c;具有发布和订阅记录流的功能。 在另一方面&#xff0c;它是企业消息传递系统。 它是一个快速&#xff0c;水平可扩展和容错的系统。 Kafka有四个核心API&#xff0c; 生产者API&#xff1a; 该API允…

oracle查看存储过程最近编译,Oracle恢复被误编译覆盖的存储过程

同事在写Oracle存储过程时候&#xff0c;是在以前已经写好的过程基础上修改的&#xff0c;想换个名字&#xff0c;由于疏忽没有改名字就编译了&#xff0c;编译完才意识到。这时原来的那个已经没有了。找我想办法恢复回原来的那个过程。通过查资料想到个方法&#xff0c;也不知…

oracle安装 redo log file,Oracle Dump Redo Log File 说明

关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)使用一. dump redo 说明关于Dump redo log 的示例&#xff0c;MOS 上的文档&#xff1a;[ID 1031381.6] 有详细说明。Dump 有两种方式&#xff1a;(1)…

unity 飞机 残骸模型_训练残骸模式– Java 8中的改进实现

unity 飞机 残骸模型Venkat Subramaniam在今天的演讲中提到了有关“级联方法”模式或“火车残骸”模式的内容&#xff0c;如下所示&#xff1a; >someObject.method1().method2().method3().finalResult()很少有人会将此与构建器模式相关联&#xff0c;但事实并非如此。 无…

datastage配置oracle,IBM Datastage8.5配置问题

大家好&#xff0c;最近因学习需要&#xff0c;在虚拟机REHL5.5上安装了IBM Datastage8.5的服务器端&#xff0c;在windows端安装客户端&#xff0c;调试连接时&#xff0c;提示密码不正确&#xff0c;我修改了密码&#xff0c;重启了服务器&#xff0c;还是提示密码不正确&…

JSON模式在构建和部署API中的作用

什么是JSON模式 &#xff1f; 它提供了描述任何JSON值的结构和属性的详尽方法。 在记录对任何JSON API的请求和响应时&#xff0c;它非常有用。 本文将探讨其在API的软件开发周期中的作用。 记录JSON响应格式 定义数据架构的最明显的用例也许是在记录API响应的结构。 让我们来…

taskctl调oracle存储过程,TASKCTL常见问题和解决方法(FAQ)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼转载自 TASKCTL部分FAQ--技术交流|业界领先ETL批量调度专家系统安装与维护&#xff1a;A1、安装时环境变量已设置&#xff0c;但安装时依然提示环境变量未设置&#xff1f;答&#xff1a;该问题主要是因为环境变量配置未生效。先检…

oracle jet auto,如何启用sqlplus的AutoTrace功能

SQL> set autotrace traceonlySQL> select table_name from user_tables;已选择98行。已用时间: 00: 00: 00.04Execution Plan----------------------------------------------------------0 SELECT STATEMENT OptimizerCHOOSE1 0 NESTED LOOPS2 1 NESTED LOOPS (OUTER)3…

使用Docker构建Oracle ADF应用程序

最近&#xff0c;我的一个好朋友在使用公共Oracle Maven存储库构建ADF应用程序v.12.2.1.2时经常遇到问题。 他要求我检查它是否对我有用。 好吧……没有。 因此&#xff0c;存储库存在一些问题。 为了使实验整洁并避免对我的工作环境造成任何影响&#xff0c;我决定在docker容器…

linux权限c是什么意思,linux服务器下权限设置

1.在终端输入命令 sudo chmod -R 777 /opt/Tomcat,那么Tomcat文件夹和它下面的所有子文件夹的属性都变成了777(读/写/执行权限)2.bin/sh^M&#xff1a;损坏的解释器: 没有那个文件或目录 错误&#xff1f;解决方法&#xff1a;脚本文件保存时使用了DOS格式&#xff0c;用DOS2UN…

linux内存不足时缩减缓存,Linux内存及页面缓存管理概要总结

物理内存管理页面内存管理Linux把物理内存划分为若干个大小相同(通常是4k)的页面&#xff0c;每个页面使用struct page描述&#xff0c;在内核初始化时会根据物理内存大小和页面大小&#xff0c;初始化一个struct page数组mem_map[]对系统中所有的页面进行统一管理。物理页面描…

jpa 异常捕获_JPA和CMT –为什么捕获持久性异常不够?

jpa 异常捕获使用CMT&#xff08; 容器管理的事务 &#xff09;进入EJB和JPA的世界非常舒适。 只需定义一些注释来划分事务边界&#xff08;或使用默认值&#xff09;即可&#xff0c;仅此而已–无需摆弄手动开始&#xff0c;提交或回滚操作。 回滚事务的一种方法是从EJB的业务…

linux 线程等待时间,线程超时等待方法 linux中select()函数使用

线程超时等待方法 linux中select()函数使用select系统调用时用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待&#xff0c;直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄&#xff0c;其实就是一个整数&#xff0c;通过socket函数的声…

使用Spring @Transactional进行数据源路由

卡尔帕帕&#xff08;Carl Papa&#xff09;在Spring框架中使用方面来确定要使用的DataSource &#xff08;读写或只读&#xff09;启发了我。 所以&#xff0c;我正在写这篇文章。 我必须承认&#xff0c;我对Spring的AbstractRoutingDataSource早已熟悉。 但是我不知道在哪里…

linux应用程序是什么,linux下c开发了一个应用程序,它的扩展名是什么?

这个貌2113似涉及到linux文件系统。linux文件系统与windows的不相同5261&#xff0c;windows系统应该是通4102过文件后缀来进行文件类型是别的&#xff0c;而1653linux虽然也会借鉴后缀信息&#xff0c;但好像不完全依赖于文件后缀。比如&#xff0c;在windows下&#xff0c;讲…