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方法(語(yǔ)句后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使用SSE進(jìn)行實(shí)時(shí)通知前端的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot使用SSE進(jìn)行實(shí)時(shí)通知前端,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06Springboot的maven間接依賴的實(shí)現(xiàn)
這篇文章主要介紹了Springboot的maven間接依賴的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法
這篇文章主要介紹了IntelliJ IDEA中SpringBoot項(xiàng)目通過(guò)devtools實(shí)現(xiàn)熱部署的方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08Java實(shí)現(xiàn)冒泡排序簡(jiǎn)單示例
冒泡排序(Bubble Sort)是一種簡(jiǎn)單的排序算法,它重復(fù)地走訪過(guò)要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái),下面這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)冒泡排序的相關(guān)資料,需要的朋友可以參考下2023-06-06SpringMVC框架如何與Junit整合看這個(gè)就夠了
這篇文章主要介紹了SpringMVC框架如何與Junit整合看這個(gè)就夠了,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05