java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...
java編寫排序的代碼
在Java 8之前,您編寫了幾行代碼來對(duì)對(duì)象集合進(jìn)行排序? Java 8您需要多少個(gè)?
您可以在Java 8中用一行完成。
讓我們看看下面的Employee類。
public class Employee {private String name;private Integer age;public Employee(String name, Integer age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}使用Collection的sort()方法,可以對(duì)員工列表進(jìn)行排序。 sort()方法需要Comparator作為參數(shù),以便比較兩個(gè)Employee對(duì)象。 因此,我們的第一個(gè)解決方案如下所示。
public class EmployeeComparotor implements Comparator {@Overridepublic int compare(Employee e1, Employee e2) {return e1.getAge().compareTo(e2.getAge()); } }employeeList.sort(new EmployeeComparotor());無需實(shí)現(xiàn)Comparator并實(shí)例化它的新實(shí)例,我們可以使用匿名類來改進(jìn)程序。
employeeList.sort(new Comparator() {@Overridepublic int compare(Employee e1, Employee e2) {return e1.getAge().compareTo(e2.getAge()); } });現(xiàn)在,讓我們看看如何通過使用Java 8功能來進(jìn)一步改進(jìn)此代碼,以減少冗長的內(nèi)容。 Java 8引入了lambda表達(dá)式,該表達(dá)式允許我們將代碼傳遞給方法。 Lambda表達(dá)式可以傳遞給需要功能接口的方法。 功能接口是僅定義一種抽象方法的接口。 在Java 8中,比較器是一個(gè)功能接口。 Collection的sort()方法期望Comparator作為參數(shù),該參數(shù)接受功能接口。 在這種情況下,比較器表示BiFunction的描述符。 BiFunction是Java 8中的功能接口。因此,您可以按以下方式將lambda表達(dá)式傳遞給sort方法。 為了按年齡對(duì)員工列表進(jìn)行排序,您需要如下一行。
employeeList.sort((Employee e1, Employee e2) -> e1.getAge().compareTo(e2.getAge()));Java編譯器可以通過使用lambda出現(xiàn)的上下文來推斷l(xiāng)ambda表達(dá)式的參數(shù)類型。 因此,您可以刪除參數(shù)的類型并按如下所示重寫代碼。
employeeList.sort((e1, e2) -> e1.getAge().compareTo(e2.getAge()));讓我們嘗試進(jìn)一步減少代碼。 Java 8 Comparator具有一個(gè)稱為compare()的靜態(tài)方法,該方法接受一個(gè)Function作為參數(shù)。 此函數(shù)應(yīng)提取排序鍵并產(chǎn)生一個(gè)Comparator對(duì)象。 因此,對(duì)Java 8中的對(duì)象列表進(jìn)行排序的最短代碼將是:
employeeList.sort(comparing((e) -> e1.getAge()));代替使用lambda表達(dá)式,我們可以使用方法引用來使我們的代碼稍微冗長一些。
employeeList.sort(comparing(Employee::getAge));如果要按年齡降序?qū)T工列表進(jìn)行排序,則可以使用接口的reversed()默認(rèn)方法。
employeeList.sort(comparing(Employee::getAge).reversed());現(xiàn)在,讓我們看一下,您要按年齡對(duì)員工進(jìn)行排序,然后再按年齡對(duì)類似年齡的員工進(jìn)行排序。 只是提醒一下,您是如何進(jìn)行Java早期版本的。 在Java 8中,您只需使用thenComparing()方法即可。
employeeList.sort(comparing(Employee::getAge).thenComparing(Employee::getName));翻譯自: https://www.javacodegeeks.com/2018/06/sort-collection-objects-java8.html
java編寫排序的代碼
總結(jié)
以上是生活随笔為你收集整理的java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java orm框架有哪些_Java S
- 下一篇: java全局变量和局部变量_Java 1