java集合根据值排序_Java 8:对集合中的值进行排序

java集合根据值排序

意识到Java 8将在接下来的几周内发布其GA版本之后,我认为现在是时候来看看它了,在过去的一周里,我一直在阅读Venkat Subramaniam的书 。

我要讲的是第3章,它涉及对人员集合进行排序。 Person类的定义大致如下:

static class Person {private String name;private int age;Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return String.format("Person{name='%s', age=%d}", name, age);}
}

在第一个示例中,我们列出了人员列表,然后按年龄升序对其进行排序:

List<Person> people = Arrays.asList(new Person("Paul", 24), new Person("Mark", 30), new Person("Will", 28));
people.stream().sorted((p1, p2) -> p1.age - p2.age).forEach(System.out::println);
Person{name='Paul', age=24}
Person{name='Will', age=28}
Person{name='Mark', age=30}

如果我们要编写一个函数来在Java 7中做同样的事情,它将看起来像这样:

Collections.sort(people, new Comparator<Person>() {@Overridepublic int compare(Person o1, Person o2) {return o1.age - o2.age;}
});for (Person person : people) {System.out.println(person);
}

Java 8减少了我们必须编写的代码量,尽管它比我们在Ruby中所能做的还要复杂:

> people = [ {:name => "Paul", :age => 24}, {:name => "Mark", :age => 30}, {:name => "Will", :age => 28}]
> people.sort_by { |p| p[:age] }
=> [{:name=>"Paul", :age=>24}, {:name=>"Will", :age=>28}, {:name=>"Mark", :age=>30}]

几页后,Venkat展示了如何使用Comparator#comparing函数来接近这一点:

Function<Person, Integer> byAge = p -> p.age ;
people.stream().sorted(comparing(byAge)).forEach(System.out::println);

我以为可以通过内联这样的'byAge'lambda来简化此过程:

people.stream().sorted(comparing(p -> p.age)).forEach(System.out::println);

尽管IntelliJ 13.0提示存在“ 循环推断 ”问题,但这似乎可以正确编译并运行。 如果我们像下面这样显式地转换lambda,则IntelliJ很高兴:

people.stream().sorted(comparing((Function<Person, Integer>) p -> p.age)).forEach(System.out::println);

如果我们在lambda中显式键入“ p”,IntelliJ似乎也很高兴,所以我认为我暂时会这样做:

people.stream().sorted(comparing((Person p) -> p.age)).forEach(System.out::println);

参考: Java 8:在Mark Needham博客博客中对来自JCG合作伙伴 Mark Needham的集合中的值进行排序 。

翻译自: https://www.javacodegeeks.com/2014/02/java-8-sorting-values-in-collections.html

java集合根据值排序

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

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

相关文章

【渝粤教育】广东开放大学民事诉讼法 形成性考核 (23)

选择题 题目&#xff1a; 调解的双方当事人依照人民调解等法律&#xff0c;自调解协议生效之日起三十日内&#xff0c;可共同向&#xff08; &#xff09;申请司法确认。 答案&#xff1a;看左侧 题目&#xff1a; 根据我国民事诉讼法的规定&#xff0c;当事人可以书面协议选…

【渝粤题库】广东开放大学 建筑制图 形成性考核

选择题 题目&#xff1a;标注坡度可用&#xff08;&#xff09;&#xff0c;百分数&#xff0c;分数等三种形式。 题目&#xff1a;以下哪种工具不属于常用绘图工具()。 题目&#xff1a;H面上产生的投影叫作&#xff08;&#xff09;。 题目&#xff1a;下列关于投影叙述正确的…

Java线程的不同状态

介绍 在Java中&#xff0c;线程可以具有状态。 Thread.State枚举定义Java线程可以具有的不同状态。 该枚举定义了以下值– 新 可运行 已封锁 等候 TIMED_WAITING 已终止 在接下来的部分中&#xff0c;我将简要概述这些状态以及它们之间的可能过渡。 Java线程的状态 新 …

【渝粤题库】广东开放大学 电子商务职业技能 形成性考核

选择题 题目&#xff1a;有形商品在线销售有两种形式&#xff0c;下列有一类与其它不相同的销售形式为 答案&#xff1a; A、一号店 B、优衣库 C、京东商城 D、当当网 题目&#xff1a;&#xff08; &#xff09; 互认识或不认识的消费者联合起来&#xff0c;加大与商家谈…

【渝粤题库】广东开放大学民法 形成性考核

选择题 题目&#xff1a;根据《合同法》的规定&#xff0c;下列合同中哪些属于有名合同&#xff1f; 题目&#xff1a;所谓合同的争议是指哪些争议&#xff1f; 题目&#xff1a;下列合同中&#xff0c;属于诺成合同的是 题目&#xff1a;甲百货商店与乙电视机厂订立买卖合同&a…

java中的双与_java 双冒号是什么操作符?

双冒号::在JDK8的Lambda表达式函数中开始使用&#xff0c;用作方法引用。具体用法&#xff0c;咱们来举个例子&#xff1a;假设有个Person类&#xff1a;public class Person {public enum Sex {MALE, FEMALE}String name;LocalDate birthday;Sex gender;String emailAddress;p…

【渝粤题库】陕西师范大学164104 网络财务管理 作业(高起专)

《网络财务管理》作业 一、选择题 1.财务管理网络化( )了地域限制&#xff0c;提高了信息传输速度&#xff0c;增加了信息的使用价值&#xff0c;降低了企业成本&#xff0c;并促使传统的财务管理演化为网络财务管理。 A.打破 B.连通 C.更新 D.重组 2.拥有雄厚的&#xff08; &…

q7goodies事例_Java 8 Friday Goodies:Lambda和SQL

q7goodies事例在 Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢 jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经 写了一些关于Java 8好东西的博客 &#xff0c;现在我们觉得是时候开始一…

【渝粤题库】陕西师范大学180208 产品管理 作业(专升本)

《产品管理》作业 一、单选题 1、产品的内涵不断扩大&#xff0c;产品的外延也发展到产品五层次&#xff0c;最基本的层次是&#xff08; &#xff09;&#xff0c;即向消费者提供的产品基本效用和利益&#xff0c;也是消费者真正要购买的利益和服务。 A 期望产品 B 一般产品 C…

【渝粤题库】陕西师范大学200221 中国思想史 作业(高起专)

一、单选题 "性善论"是谁提出来的&#xff1f; A老子 B孟子 C孔子 D庄子 2 &#xff08;&#xff09;&#xff08;公元240~248年&#xff09;是魏齐王曹芳的年号。 A建元 B元光 C元平 D正始父义、母慈、兄友、弟恭、子孝五种美德合称&#xff1f; A五义B 五则C五典 …

IDE日志分析方法pt。 2

介绍 在第一部分中&#xff0c;我解释了日志分析的理论方法&#xff0c;我认为这对维持工程师是最合适的。 这位工程师不需要在日志出现时立即对其进行分析&#xff0c;而是专注于对复杂问题的深入分析。 在第二部分中&#xff0c;我将展示一个复杂的模板可以涵盖许多搜索场景&…

【渝粤题库】陕西师范大学200821 课程与教学论(计算机)

《课程与教学论》作业 一、选择题 1&#xff0e;教师应有高尚的思想道德和渊博的知识及教育能力&#xff0c;还必须具备良好的心理素质。下面不属于教师心理素质方面的是&#xff08; &#xff09;。 A&#xff0e;意志 B&#xff0e;自我意识 C&#xff0e;情绪 D&#xff0e;…

java电影票选座_jQuery实现电影票选座效果手机端代码

部分js代码//判断页面加载完成window.onload function () {if (document.readyState "complete") {$("body").show();}};var arr []; //已选座位数组var dj 99; //电影票单价 number$(".danjia").text(dj);/*遍历检查售票状态typ 0 可选typ …

【渝粤题库】陕西师范大学201571金融法作业(专升本)

《金融法》作业 一、单项选择题 1&#xff0e;下列银行中属于政策性银行的有&#xff08; &#xff09;。 A.中国人民银行 B.中国农业银行 C.浦东发展银行 D.中国进出口银行 2&#xff0e;中央银行的职能不包括&#xff08; &#xff09;。 A.发行的银行 B.储户的银行 C.银行的…

java char指针数组_简单总结C语言中各种类型的指针的概念

C语言中有很多关于指针的使用&#xff0c;指针也是C语言的灵魂所在&#xff0c;而且C语言中也有很多有关指针的概念&#xff0c;这里学习并总结了一些知道的概念。常量指针&#xff1a;首先它是一个指针&#xff0c;常量只是用来修饰指针的定语。其定义如下&#xff1a;char co…

【渝粤题库】陕西师范大学202081 管理学 作业 (专升本、高起本、高起专)

《管理学〉作业 一、判断改错 &#xff11;&#xff0e;使管理科学从重视对物的研究转向重视对人的研究的理论是马斯洛的需求层次理论。 &#xff12;&#xff0e;根据亨利明茨伯格的研究&#xff0c;管理者扮演的决策方面的角色包括组织发言人、纠纷调解者、资源分配者和谈判者…

【渝粤题库】陕西师范大学202961 教育社会学 作业(高起本、专升本)

《教育社会学》作业 一、 单项选择题 1&#xff0e;从研究对象上讲&#xff0c;教育社会学探究的主要是 A.广义教育 B.中观教育 C.狭义教育 D.社会教育 2&#xff0e;教育社会对自身以外的其他社会现象所发生的功能是 A.教育社会的外功能 B.教育社会的内功能 C.教育社会的负功能…

java 面试指南_Java面试参考指南–第1部分

java 面试指南JAVA面向对象的概念 Java in基于面向对象的概念&#xff0c;它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化&#xff0c;更易于在整个应用程序中重用。 例如椅子&#xff0c;风扇&#xff0c;狗&#xff0c;电脑…

java 提交的内存_Java使用内存映射实现大文件的上传

在处理大文件时&#xff0c;如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作&#xff0c;都将导致进程因频繁读写外存而降低速度.如下为一个对比实验。package test;import java.io.BufferedInputStream;import java.io.FileIn…

【渝粤题库】陕西师范大学210006幼儿园课程作业(高起专)

《幼儿园课程》&#xff08;专科&#xff09;作业 一、单选题 1、活动课程是以&#xff08; &#xff09;为中心来组织学习内容的。 A 学科 B 问题 C 概念 D 儿童 2、&#xff08; &#xff09;指的是幼儿园教师根据实际情况灵活的将课程方案转化为生动的课程实践&#xff08;现…