Java8 Comparator排序方法實例詳解
更新時間:2019年12月27日 15:31:08 作者:天涯過者
這篇文章主要介紹了Java8 Comparator排序方法實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了Java8 Comparator排序方法實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Java8 中 Comparator 接口提供了一些靜態(tài)方法,可以方便于我們進行排序操作,下面通過例子講解下如何使用
對整數列表排序(升序)
List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8); list.sort(Comparator.naturalOrder()); System.out.println(list);
對整數列表排序(降序)
List<Integer> list = Arrays.asList(1, 4, 2, 6, 2, 8); list.sort(Comparator.reverseOrder()); System.out.println(list);
根據對象屬性(年齡)進行排序
public class Test {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("a", 2));
personList.add(new Person("b", 4));
personList.add(new Person("c", 7));
// 升序
personList.sort(Comparator.comparingInt(Person::getAge));
// 降序
personList.sort(Comparator.comparingInt(Person::getAge).reversed());
System.out.println(personList);
}
public static class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getAge() {
return age;
}
// ... toString 方法
}
}
根據對象屬性(價格、速度)進行排序,需要注意的是,排序有先后之分,不同的順序會導致不同的結果
public class Test {
public static void main(String[] args) {
List<Computer> list = new ArrayList<>();
list.add(new Computer("xiaomi",4000,6));
list.add(new Computer("sony",5000,4));
list.add(new Computer("dell",4000,5));
list.add(new Computer("mac",6000,8));
list.add(new Computer("micro",5000,6));
// 先以價格(升序)、后再速度(升序)
list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed));
// 先以速度(降序)、后再價格(升序)
list.sort(Comparator.comparingInt(Computer::getSpeed).reversed().thenComparingInt(Computer::getPrice));
// 先以價格(降序)、后再速度(降序)
list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed).reversed());
System.out.println(list);
}
public static class Computer {
private String name;
private Integer price;
private Integer speed;
public Computer(String name, Integer price, Integer speed) {
this.name = name;
this.price = price;
this.speed = speed;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getSpeed() {
return speed;
}
public void setSpeed(Integer speed) {
this.speed = speed;
}
// ... toString 方法
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
sentinel整合ribbon與fallback流程分步講解
這篇文章主要介紹了sentinel整合ribbon與fallback分步流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題
這篇文章主要介紹了解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Spring-boot原理及spring-boot-starter實例和代碼
spring-boot的starter是一個通過maven完成自包含并通過annotation配置使得可被spring上下文發(fā)現并實例化的一個可插拔的組件或服務。這篇文章主要介紹了Spring-boot原理及spring-boot-starter實例和代碼 ,需要的朋友可以參考下2019-06-06

