Java中List對(duì)象集合按對(duì)象中某字段進(jìn)行排序舉例
在Java中,可以使用List集合對(duì)象的sort(Comparator<? super E> c)方法,按照對(duì)象中某字段對(duì)List集合進(jìn)行排序
default void sort(Comparator<? super E> c) {
Object[] a = this.toArray();
Arrays.sort(a, (Comparator) c);
ListIterator<E> i = this.listIterator();
for (Object e : a) {
i.next();
i.set((E) e);
}
}栗子:
import java.util.*;
import java.util.stream.Collectors;
public class StreamTest {
public static void main(String[] args) {
List<Person2> personList = new ArrayList<Person2>();
personList.add(new Person2("Tom", 8900, 18,"male", "A"));
personList.add(new Person2("Jack", 7000, 19,"male", "A"));
personList.add(new Person2("Lily", 7800, 20,"female", "D"));
personList.add(new Person2("Anni", 8200, 18,"female", "B"));
personList.add(new Person2("Owen", 9500, 23,"male", "D"));
personList.add(new Person2("Alisa", 7900, 28,"female", "C"));
//根據(jù)List集合對(duì)象的sort方法(語句后x.get與y.get調(diào)換位置即為倒序)
personList.sort((x,y) -> Integer.compare(x.getSalary(),y.getSalary()));//int類型正序
personList.forEach(System.out::println);
System.out.println("================================");
personList.sort((a, b) -> a.getSalary() - b.getSalary());//int類型正序
personList.forEach(System.out::println);
System.out.println("================================");
personList.sort(Comparator.comparing(Person2::getSalary));//int類型正序排序
personList.forEach(System.out::println);
System.out.println("================================");
personList.sort((a,b) -> a.getLevel().compareTo(b.getLevel()));//其他類型正序
personList.forEach(System.out::println);
System.out.println("================================");
//stream流的sorted方法正序排序(倒序:Comparator.comparing(Person2::getSalary).reversed())
personList = personList.stream().sorted(Comparator.comparing(Person2::getSalary)).collect(Collectors.toList());
personList.forEach(System.out::println);
System.out.println("================================");
}
}
class Person2 {
private String name; // 姓名
private int salary; // 薪資
private int age; // 年齡
private String sex; //性別
private String level; // 級(jí)別
// 構(gòu)造方法
public Person2(String name, int salary, int age, String sex, String level) {
this.name = name;
this.salary = salary;
this.age = age;
this.sex = sex;
this.level = level;
}
// 省略了get和set,請(qǐng)自行添加
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
@Override
public String toString() {
return "Person2{" +
"name=" + name +
", salary='" + salary + '\'' +
", age='" + age + '\'' +
", sex='" + sex + '\'' +
", level=" + level +
'}';
}
}打印輸出結(jié)果如下:
Person2{name=Jack, salary='7000', age='19', sex='male', level=A}
Person2{name=Lily, salary='7800', age='20', sex='female', level=D}
Person2{name=Alisa, salary='7900', age='28', sex='female', level=C}
Person2{name=Anni, salary='8200', age='18', sex='female', level=B}
Person2{name=Tom, salary='8900', age='18', sex='male', level=A}
Person2{name=Owen, salary='9500', age='23', sex='male', level=D}
================================
Person2{name=Jack, salary='7000', age='19', sex='male', level=A}
Person2{name=Lily, salary='7800', age='20', sex='female', level=D}
Person2{name=Alisa, salary='7900', age='28', sex='female', level=C}
Person2{name=Anni, salary='8200', age='18', sex='female', level=B}
Person2{name=Tom, salary='8900', age='18', sex='male', level=A}
Person2{name=Owen, salary='9500', age='23', sex='male', level=D}
================================
Person2{name=Jack, salary='7000', age='19', sex='male', level=A}
Person2{name=Lily, salary='7800', age='20', sex='female', level=D}
Person2{name=Alisa, salary='7900', age='28', sex='female', level=C}
Person2{name=Anni, salary='8200', age='18', sex='female', level=B}
Person2{name=Tom, salary='8900', age='18', sex='male', level=A}
Person2{name=Owen, salary='9500', age='23', sex='male', level=D}
================================
Person2{name=Jack, salary='7000', age='19', sex='male', level=A}
Person2{name=Tom, salary='8900', age='18', sex='male', level=A}
Person2{name=Anni, salary='8200', age='18', sex='female', level=B}
Person2{name=Alisa, salary='7900', age='28', sex='female', level=C}
Person2{name=Lily, salary='7800', age='20', sex='female', level=D}
Person2{name=Owen, salary='9500', age='23', sex='male', level=D}
================================
Person2{name=Jack, salary='7000', age='19', sex='male', level=A}
Person2{name=Lily, salary='7800', age='20', sex='female', level=D}
Person2{name=Alisa, salary='7900', age='28', sex='female', level=C}
Person2{name=Anni, salary='8200', age='18', sex='female', level=B}
Person2{name=Tom, salary='8900', age='18', sex='male', level=A}
Person2{name=Owen, salary='9500', age='23', sex='male', level=D}
================================
總結(jié)
到此這篇關(guān)于Java中List對(duì)象集合按對(duì)象中某字段進(jìn)行排序的文章就介紹到這了,更多相關(guān)Java中List對(duì)象集合排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合Pulsar的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot整合Pulsar的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄
這篇文章主要介紹了Spring Security OAuth2集成短信驗(yàn)證碼登錄以及第三方登錄,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
利用Java工具類Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能
這篇文章主要介紹了利用Java工具類Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能,利用Hutool實(shí)現(xiàn)驗(yàn)證碼校驗(yàn),校驗(yàn)的Servlet與今天的第一篇是一樣的,唯一就是驗(yàn)證碼的生成是不一樣的,利用Hutool生成驗(yàn)證碼更快捷.需要的朋友可以參考下2022-10-10
使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法
JDBC是Java中用于操作數(shù)據(jù)庫的API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,它通過JDK自帶的JDBC API和數(shù)據(jù)庫驅(qū)動(dòng)包進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查,本文給大家介紹使用Java操作MySQL實(shí)現(xiàn)數(shù)據(jù)交互的方法,感興趣的朋友跟隨小編一起看看吧2025-01-01
Java實(shí)現(xiàn)數(shù)組反轉(zhuǎn)翻轉(zhuǎn)的方法實(shí)例
本篇文章主要介紹了Java實(shí)現(xiàn)數(shù)組反轉(zhuǎn)翻轉(zhuǎn)的方法實(shí)例,詳細(xì)的介紹了3種實(shí)現(xiàn)方法,有興趣的可以了解一下。2017-04-04
Spring連接Mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟
本文主要介紹了Spring連接Mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Java線程之join_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
join() 定義在Thread.java中,下文通過源碼分享join(),需要的朋友參考下吧2017-05-05
java實(shí)現(xiàn)動(dòng)態(tài)數(shù)組
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)動(dòng)態(tài)數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
java Class文件結(jié)構(gòu)解析常量池字節(jié)碼
這篇文章主要為大家介紹了java Class文件的整體結(jié)構(gòu)解析常量池字節(jié)碼詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

