Java實現(xiàn)ArrayList排序的方法詳解
簡介
說明
本文用示例介紹Java的ArrayList排序的方法。
List排序方法
主要有三種方法(按推薦度排序):
- JDK8的stream
- Comparator#compare()
- Comparable#compareTo()
法1:JDK8的stream
法2:Comparator#compare()
需求:用戶有成績和年齡。按成績排序,若成績相同,則按年齡排序。
package org.example.a; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class User{ private int score; private int age; public User(int score, int age){ super(); this.score = score; this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class Demo { public static void main(String[] args) { List<User> users = new ArrayList<User>(); users.add(new User(95, 26)); users.add(new User(84, 23)); users.add(new User(96, 25)); users.add(new User(95, 24)); Collections.sort(users, new Comparator<User>() { @Override public int compare(User o1, User o2) { int i = o2.getScore() - o1.getScore(); if(i == 0){ return o1.getAge() - o2.getAge(); } return i; } }); for(User user : users){ System.out.println(user.getScore() + "," + user.getAge()); } } }
執(zhí)行結(jié)果
96,25
95,24
95,26
84,23
法3:Comparable#compareTo()
默認按增序排序:
package org.example.a; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Demo { public static void main(String[] args) { List<Integer> nums = new ArrayList<Integer>(); nums.add(3); nums.add(5); nums.add(1); nums.add(0); System.out.println(nums); Collections.sort(nums); System.out.println(nums); } }
執(zhí)行結(jié)果:
[3, 5, 1, 0]
[0, 1, 3, 5]
需求:用戶有成績和年齡。按成績降序排序,若成績相同,則按年齡正序排序。
package org.example.a; import java.util.ArrayList; import java.util.Collections; import java.util.List; class User implements Comparable<User>{ private int score; private int age; public User(int score, int age){ super(); this.score = score; this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(User o) { int i = o.getScore() - this.getScore(); if(i == 0){ return this.getAge() - o.getAge(); } return i; } } public class Demo { public static void main(String[] args) { List<User> users = new ArrayList<User>(); users.add(new User(95, 26)); users.add(new User(84, 23)); users.add(new User(96, 25)); users.add(new User(95, 24)); Collections.sort(users); for(User user : users){ System.out.println(user.getScore() + "," + user.getAge()); } } }
執(zhí)行結(jié)果
96,25
95,24
95,26
84,23
到此這篇關(guān)于Java實現(xiàn)ArrayList排序的方法詳解的文章就介紹到這了,更多相關(guān)Java ArrayList排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
透徹理解Java中Synchronized(對象鎖)和Static Synchronized(類鎖)的區(qū)別
這篇文章主要介紹了Java中Synchronized(對象鎖)和Static Synchronized(類鎖)的區(qū)別,希望對大家有所幫助,一起跟隨小編過來看看吧2018-05-05SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能
這篇文章主要介紹了SpringBoot整合mybatis-plus實現(xiàn)分頁查詢功能,pringBoot分頁查詢的兩種寫法,一種是手動實現(xiàn),另一種是使用框架實現(xiàn),現(xiàn)在我將具體的實現(xiàn)流程分享一下,需要的朋友可以參考下2023-11-11Mybatis-Plus的多數(shù)據(jù)源你了解嗎
這篇文章主要為大家詳細介紹了Mybatis-Plus的多數(shù)據(jù)源,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03Java Mail與Apache Mail發(fā)送郵件示例
這篇文章主要介紹了Java Mail與Apache Mail發(fā)送郵件示例的相關(guān)資料,需要的朋友可以參考下2014-10-10