class employe_Java 8 –集合sort()方法–按Employe对象(Id,名称,年龄)列出自定义排序示例

class employe

有关在Java中对自定义对象进行排序的完整指南。 Collections.sort()方法基于Comparable或Comparator实现进行排序。 用于对Employee对象进行排序的示例自定义排序

1.简介

在本教程中,您将学习如何在java中对Custom对象进行排序 。 首先,我们将显示示例程序以对字符串列表进行排序,然后移至
自定义Employee的Arraylist的排序排序由Empoyee完成
ID,姓名和年龄 。 本文末尾显示的所有示例均在GitHub上。

2. Collections.sort()示例

Collections类具有一个sort()方法,该方法采用List实现,例如ArrayListLinkedList等。

现在,创建一个带有字符串值的列表,并使用Collections.sort()方法对这些值进行排序。

默认情况下,Collections.sort()方法以升序进行排序。 所有添加到列表中的值必须实现Comparable接口。

如果将null传递给sort()方法,它将抛出java.lang.NullPointerException

2.1字符串排序表

 package com.java.w3schools.blog.collections;  import java.util.ArrayList;  import java.util.Collections;  import java.util.Iterator;  import java.util.List;  /** * * Collections.sort() example to sort List of Strngs. * * @author JavaProgramTo.com * */  public class CollectionSortExample { public static void main(String[] args) { List<String> countries = new ArrayList<>(); countries.add( "Singapore" ); countries.add( "India" ); countries.add( "USA" ); countries.add( "UK" ); countries.add( "Australia" ); System.out.println( "List of countires before sorting : " ); Iterator<String> it = countries.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Collections.sort(countries); System.out.println( "List of countries after sorting :" ); it = countries.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }  } 

输出:

 List of countires before sorting :  Singapore  India  USA  UK  Australia  List of countries after sorting :  Australia  India  Singapore  UK  USA 

2.2整数排序列表

整数素数排序程序列表。

 package com.java.w3schools.blog.collections.sorting;  import java.util.ArrayList;  import java.util.Collections;  import java.util.Iterator;  import java.util.List;  /** * * Collections.sort() example to sort List of Strngs. * * @author JavaProgramTo.com * */  public class CollectionSortIntegersExample { public static void main(String[] args) { List<Integer> primeNumbers = new ArrayList<>(); primeNumbers.add( 19 ); primeNumbers.add( 7 ); primeNumbers.add( 37 ); primeNumbers.add( 59 ); primeNumbers.add( 23 ); System.out.println( "List of integer prime numnbers before sorting : " ); Iterator<Integer> it = primeNumbers.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Collections.sort(primeNumbers); System.out.println( "List of integer prime numnbers after sorting :" ); it = primeNumbers.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }  } 

输出:

 List of integer prime numnbers before sorting :  19  7  37  59  23  List of integer prime numnbers after sorting :  7  19  23  37  59 

参见上面的两个程序,它们按照从低到高的升序对整数和字符串按字母顺序进行排序。

如果传递了不同类型的对象,则将获得ClassCastException,如下所示。

 public class CollectionSortClassCastException { public static void main(String[] args) { List values = new ArrayList(); values.add( "Singapore" ); values.add( 737 ); values.add(2323f); Collections.sort(values); }  } 

错误:

 Exception in thread "main" Exception in thread java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap' java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader 'bootstrap' ) at java.base/java.lang.Integer.compareTo(Integer.java: 64 ) at java.base/java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java: 320 ) at java.base/java.util.ComparableTimSort.sort(ComparableTimSort.java: 188 ) at java.base/java.util.Arrays.sort(Arrays.java: 1316 ) at java.base/java.util.Arrays.sort(Arrays.java: 1510 ) at java.base/java.util.ArrayList.sort(ArrayList.java: 1749 ) at java.base/java.util.Collections.sort(Collections.java: 143 ) at com.java.w3schools.blog.collections.sorting.CollectionSortClassCastException.main(CollectionSortClassCastException.java: 25 ) 

2.3降序排列

将Comparator传递给sort()方法将按照与升序相反的顺序进行排序。 reverseOrder()方法返回一个比较器以逆转自然顺序。

 Collections.sort(countries, Collections.reverseOrder())  Collections.sort(primeNumbers, Collections.reverseOrder()) 

3.使用员工对象的Java自定义排序

到目前为止,显示了带有字符串和整数的示例程序。 有一种常见的方案可以对用户定义的对象进行排序,每个访问员都希望更好地理解收集概念。

我们将通过Employe类按ID排序来演示该示例。

首先,创建具有ID,名称和年龄的Employee类。

接下来,实现Comparable接口并提供对compareTo()方法的实现。

 package com.java.w3schools.blog.collections.sorting;  public class Employee implements Comparable<Employee> { private int id; private String name; private int age; public Employee( int id, String name, int age) { super (); this .id = id; this .name = name; this .age = age; } public int getId() { return id; } public void setId( int id) { this .id = id; } public String getName() { return name; } public void setName(String name) { this .name = name; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } @Override public int compareTo(Employee o) { if (o.getId() > this .getId()) { return 1 ; } else if (o.getId() < this .getId()) { return - 1 ; } return 0 ; }  @Override public String toString() { return "Employee [id=" + id + ", name=" + name + ", age=" + age + "]" ; }  } 

3.1按ID对Employee对象进行排序

 package com.java.w3schools.blog.collections.sorting;  import java.util.ArrayList;  import java.util.Collections;  import java.util.Iterator;  import java.util.List;  public class CustomEmplpoyeeSortById { public static void main(String[] args) { List<Employee> emps = new ArrayList<>(); emps.add( new Employee( 2001 , "Modi" , 55 )); emps.add( new Employee( 1901 , "Trumph" , 57 )); emps.add( new Employee( 1950 , "Boris Johnson" , 56 )); System.out.println( "Before sorting custom list of employees : " ); Iterator<Employee> it = emps.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Collections.sort(emps); System.out.println( "After sorting custom list of employees in natural order: " ); it = emps.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Collections.sort(emps, Collections.reverseOrder()); System.out.println( "After sorting custom list of employees in decendng order: " ); it = emps.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }  } 

输出:

 Before sorting custom list of employees :  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  After sorting custom list of employees in natural order:  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  Employee [id= 1901 , name=Trumph, age= 57 ]  After sorting custom list of employees in decendng order:  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  Employee [id= 2001 , name=Modi, age= 55 ] 

3.2按名称排序Employee对象的列表

更改比较bu名称。

 @Override public int compareTo(Employee o) {   return this .getName().compareTo(o.getName());  } 

现在运行生成按名称排序的程序。

 Before sorting custom list of employees :  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  After sorting custom list of employees by name in natural order:  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1901 , name=Trumph, age= 57 ]  After sorting custom list of employees by name in decendng order:  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ] 

3.3按年龄排序员工对象列表

根据员工类别的年龄更改比较。

 @Override  public int compareTo(Employee o) { if (o.getAge() > this .getAge()) { return 1 ; } else if (o.getAge() < this .getAge()) { return - 1 ; } return 0 ;  } 

输出:

 Before sorting custom list of employees :  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  After sorting custom list of employees by age in natural order:  Employee [id= 1901 , name=Trumph, age= 57 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  Employee [id= 2001 , name=Modi, age= 55 ]  After sorting custom list of employees by age in decendng order:  Employee [id= 2001 , name=Modi, age= 55 ]  Employee [id= 1950 , name=Boris Johnson, age= 56 ]  Employee [id= 1901 , name=Trumph, age= 57 ] 

4. Java 8自定义排序-比较器

通过在Java 8中使用lambda表达式,我们可以如下所示在单行中编写自定义比较器。

 Comparator<Employee> compareByName = (Employee o1, Employee o2) -> o1.getName().compareTo( o2.getName() );  Collections.sort(emps, compareByName); 

上面的代码生成的输出与在第3节示例中看到的相同。

5.结论

在本文中,我们已经看到了如何在Java中对字符串和整数列表进行排序。 升序和降序排序列表。 示例程序可能存在错误。

而且,基于员工ID,姓名和年龄变量的自定义排序。

GitHub代码

翻译自: https://www.javacodegeeks.com/2020/04/java-8-collections-sort-method-list-custom-sort-example-by-employe-objects-id-name-age.html

class employe

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

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

相关文章

Spring入门(一)之简介

一、Spring定义 Spring是一个开源框架&#xff0c;Spring是于2003 年兴起的一个轻量级的Java 开发框架&#xff0c;由Rod Johnson创建。 简单来说&#xff0c;Spring是一个分层的JavaSE/javaEE full-stack(全栈的) 轻量级开源框架。 二、Spring框架特征 &#xff08;1&#xff…

本地方法(JNI)——访问域+字符串参数

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——访问域字符串参数 的基础知识 &#xff1b; 2&#xff09; for source code, please visit https://github.com/pacosonTang/core-java…

aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器

aws上负载均衡器标组端口昨天&#xff0c;我使用AWS CloudFormation模板最终创建了ECS服务&#xff08;Fargate类型&#xff09;&#xff0c;还创建了包括应用程序负载均衡器&#xff0c;目标组和IAM角色的资源。 创建堆栈时&#xff0c;出现以下错误&#xff1a; 具有target…

Spring入门(二)之下载与安装

一、Spring下载 参考其他博客&#xff1a;http://www.cnblogs.com/yjmyzz/p/3847364.html或http://blog.csdn.net/xinzhujin/article/details/54319043 Spring下载地址为&#xff1a;http://repo.spring.io/release/org/springframework/spring/ 二、压缩包下的SpringFramewo…

HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例

在HttpClient API中获取状态代码的快速指南。 getStatusLine&#xff08;&#xff09;。getStatusCode&#xff08;&#xff09;示例和相关的错误。 1.简介 在这个非常快速的教程中&#xff0c;我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要…

Spring入门(三)之IoC

一、IoC定义IoC&#xff0c;即控制反转。开发者在使用类的实例之前&#xff0c;需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器&#xff0c;这样开发应用代码时只需要直接使用类的实例&#xff0c;这就是IoC。在讨论控制反转这个概念的过程中&#xff0c;Martin Fo…

云服务器的优点和缺点_为什么要使用云计算? 的优点和缺点

云服务器的优点和缺点在过去的几年中&#xff0c;云计算一直是IT界的热门话题。 像许多事物一样&#xff0c;当它第一次出现时&#xff0c;很多人都将其视为下一件大事&#xff0c;但是云计算确实达到了期望&#xff0c;并真正改变了当今信息技术业务部门的运作方式。 云计算由…

本地方法(JNI)——编码签名

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——编码签名 的基础知识 &#xff1b; 【1】编码签名相关 1&#xff09; 混编规则&#xff1a;为了访问实例域和调用用 java 定义的方法&a…

Shell入门(一)之简介

一、Shell 定义 &#xff08;1&#xff09;Shell Shell是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 &#xff08;2&#xff09;Shell 脚本&#xff08;shell script&#xff09; Shell 脚本…

aws dynamodb_使用适用于Java 2的AWS开发工具包的AWS DynamoDB版本字段

aws dynamodb将任何实体上的版本属性保存到 AWS DynamoDB数据库&#xff0c;它只是表示已修改实体次数的数字表示。 首次创建实体时&#xff0c;可以将其设置为1&#xff0c;然后在每次更新时递增。 好处是立竿见影的-指示实体已被修改的次数&#xff0c;可用于审核实体。 此…

本地方法(JNI)——调用 java 方法

【0】README 1&#xff09; 本文部分文字描述 转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——调用 java 方法 的基础知识 &#xff1b; 2&#xff09; C语言调用java 方法&#xff0c;包括&#xff1a; 静态C 方法 和 非静态C 方法…

Shell入门(二)之变量

一、shell变量类型 shell变量一般只有两种类型&#xff1a;数值型与字符串型。 运行shell时&#xff0c;会同时存在三种变量&#xff1a; 1) 局部变量 局部变量在脚本或命令中定义&#xff0c;仅在当前shell实例中有效&#xff0c;其他shell启动的程序不能访问局部变量。 …

aws部署ssh_将Quarkus应用程序部署到AWS Elastic Beanstalk

aws部署sshElastic Beanstalk允许在AWS云中部署和管理应用程序&#xff0c;而无需了解运行这些应用程序的基础架构。 使用Elastic Beanstalk&#xff0c;您可以运行可处理HTTP请求的网站&#xff0c;Web应用程序或Web API&#xff0c;但也可以运行辅助应用程序以运行长任务。 …

本地方法(JNI)——访问数组元素+错误处理

【0】README 1&#xff09; 本文文字描述 均转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——访问数组元素错误处理 的基础知识 &#xff1b; 2&#xff09;for source code, please visit : https://github.com/pacosonTang/core-j…

Shell入门(三)之字符串

一、单引号 字符串可以用单引号&#xff0c;也可以用双引号&#xff0c;也可以不用引号。单双引号的区别跟PHP类似。 单引号不存在转义字符&#xff0c;如&#xff1a;\a&#xff0c;\n&#xff0c;$abc #!/bin/bash aabc b${a}bc; echo $b; #结果为&#xff1a;${a}bc…

tms tck_在雅加达EE TCK中使用Arquillian的可能方法

tms tck最近&#xff0c;我们讨论了如何创建独立的Jakarta Batch测试套件&#xff08;TCK&#xff09;。 对于大多数提交者而言&#xff0c;使用Arquillian将测试从实现中如何执行抽象化是很自然的。 但是Romain提出了一个有趣的想法&#xff0c;即使用纯JUnit5引起了我的思考。…

本地方法(JNI)——使用调用API

【0】README 1&#xff09; 本文文字描述source code 均转自 core java volume 2 &#xff0c; 旨在理解 本地方法&#xff08;JNI&#xff09;——使用调用API 的基础知识 &#xff1b; 2&#xff09; for source code, please visit : https://github.com/pacosonTang/cor…

Shell入门(四)之数组

一、一维数组 bash支持一维数组&#xff08;不支持多维数组&#xff09;&#xff0c;并且没有限定数组的大小。 类似与C语言&#xff0c;数组元素的下标由0开始编号。 二、定义数组 在Shell中&#xff0c;用括号来表示数组&#xff0c;数组元素用"空格"符号分割开。…

aws cloud map_销毁AWS资源:Cloud-Nuke还是AWS-Nuke?

aws cloud map因此&#xff0c;您在开发帐户上工作&#xff0c;并且Terraform陷入了一个循环&#xff0c;难道不让您轻易销毁剩余资源吗&#xff1f; 进入nuke CLI的世界&#xff01; 在撰写本文时&#xff0c;我使用的是v0.1.16版本 用Go语言编写的《 Gruntwork》不会破坏掉…

mysql error 1045 的解决方法

【0】README 1&#xff09;以下是 解决方法的steps&#xff1a; step1&#xff09;点击 skip 和 cancel 退出 mysql 配置 step2&#xff09; 重启mysql server config wizard&#xff0c; 然后 remove instance step3&#xff09; 随后卸载mysql&#xff08;通过360或 …