關(guān)于stream().sorted()以及java中常用的比較器排序
1.sorted():無(wú)參數(shù)的情況下
需要對(duì)應(yīng)的Bean實(shí)現(xiàn)Comparable 接口
package com.itheima.demo18_擴(kuò)展字符串排序;
import java.util.ArrayList; import java.util.List;public class Harbor_Stream { public static void main(String[] args) { List<Person> personList = new ArrayList<Person>(); personList.add(new Person("Tom", 8900, 28,"male", "New York")); personList.add(new Person("Jack", 7000, 29,"male", "Washington")); personList.add(new Person("Lily", 7800, 320,"female", "Washington")); personList.add(new Person("Anni", 8200, 26,"female", "New York")); personList.add(new Person("Owen", 9500, 27,"male", "New York")); personList.add(new Person("Alisa", 7900, 29,"female", "New York")); personList.stream().sorted().forEach(s-> System.out.println(s)); } }
package com.itheima.demo18_擴(kuò)展字符串排序;
import java.util.Objects; public class Person implements Comparable{ private String name; // 姓名 private int salary; // 薪資 private int age; // 年齡 private String sex; //性別 private String area; // 地區(qū) public String getName() { return name; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return salary == person.salary && age == person.age && Objects.equals(name, person.name) && Objects.equals(sex, person.sex) && Objects.equals(area, person.area); } @Override public int hashCode() { return Objects.hash(name, salary, age, sex, area); } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", salary=" + salary + ", age=" + age + ", sex='" + sex + '\'' + ", area='" + area + '\'' + '}'; } 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 getArea() { return area; } public void setArea(String area) { this.area = area; } // 構(gòu)造方法 public Person(String name, int salary, int age,String sex,String area) { this.name = name; this.salary = salary; this.age = age; this.sex = sex; this.area = area; } @Override public int compareTo(Object o) { Person good = (Person) o; return Integer.compare( this.getAge(),good.getAge()); } }
2.sorted():有參數(shù)的情況下
直接按照stream流的傳參格式進(jìn)行傳參
package com.itheima.demo18_擴(kuò)展字符串排序;
import java.util.ArrayList; import java.util.List; public class Harbor_Stream { public static void main(String[] args) { List<Person> personList = new ArrayList<Person>(); personList.add(new Person("Tom", 8900, 28,"male", "New York")); personList.add(new Person("Jack", 7000, 29,"male", "Washington")); personList.add(new Person("Lily", 7800, 320,"female", "Washington")); personList.add(new Person("Anni", 8200, 26,"female", "New York")); personList.add(new Person("Owen", 9500, 27,"male", "New York")); personList.add(new Person("Alisa", 7900, 29,"female", "New York")); personList.stream().sorted(((o1, o2) ->{return o1.getAge()-o2.getAge();})).forEach(s-> System.out.println(s)); } }
3.Collections.sort(personList, new Comparator<Person>()
package com.itheima.demo18_擴(kuò)展字符串排序;
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Harbor_Stream { public static void main(String[] args) { List<Person> personList = new ArrayList<Person>(); personList.add(new Person("Tom", 8900, 28,"male", "New York")); personList.add(new Person("Jack", 7000, 29,"male", "Washington")); personList.add(new Person("Lily", 7800, 320,"female", "Washington")); personList.add(new Person("Anni", 8200, 26,"female", "New York")); personList.add(new Person("Owen", 9500, 27,"male", "New York")); personList.add(new Person("Alisa", 7900, 29,"female", "New York")); // personList.stream().sorted(((o1, o2) ->{return o1.getAge()-o2.getAge();})).forEach(s-> System.out.println(s)); Collections.sort(personList, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getAge()-o2.getAge(); } }); personList.forEach(s->{ System.out.println(s); }); } }
4.還是sort進(jìn)行還需的寫(xiě)法
采用表達(dá)式
list.add(new Student("張三",16)); list.add(new Student("張四",19)); list.add(new Student("李五",16)); list.add(new Student("張馬六",16)); /* Collections.sort(list, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o2.getName().compareTo(o1.getName()); } });*/ List<Student> collect = list.stream().sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getName)) .collect(Collectors.toList()); System.out.println(collect); // System.out.println(list);
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
每天練一練Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù)
這篇文章主要介紹了Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù),每天練一練,水平在不知不覺(jué)中提高,需要的朋友快過(guò)來(lái)看看吧2021-08-08Java concurrency集合之ArrayBlockingQueue_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
ArrayBlockingQueue是數(shù)組實(shí)現(xiàn)的線程安全的有界的阻塞隊(duì)列。下面通過(guò)本文給大家介紹Java concurrency集合之ArrayBlockingQueue的相關(guān)知識(shí),感興趣的朋友一起看看吧2017-06-06Java SpringBoot自動(dòng)裝配原理詳解及源碼注釋
SpringBoot的自動(dòng)裝配是拆箱即用的基礎(chǔ),也是微服務(wù)化的前提。其實(shí)它并不那么神秘,我在這之前已經(jīng)寫(xiě)過(guò)最基本的實(shí)現(xiàn)了,大家可以參考這篇文章,來(lái)看看它是怎么樣實(shí)現(xiàn)的,我們透過(guò)源代碼來(lái)把握自動(dòng)裝配的來(lái)龍去脈2021-10-10如何自動(dòng)生成Mybatis的Mapper文件詳解
這篇文章主要給大家介紹了關(guān)于如何自動(dòng)生成Mybatis的Mapper文件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能
這篇文章主要介紹了MyBatis與SpringMVC相結(jié)合實(shí)現(xiàn)文件上傳、下載功能的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06SpringBoot開(kāi)發(fā)技巧啟動(dòng)時(shí)配置校驗(yàn)實(shí)現(xiàn)示例
這篇文章主要為大家介紹了SpringBoot開(kāi)發(fā)在啟動(dòng)時(shí)自動(dòng)配置校驗(yàn)的實(shí)現(xiàn)示例及原理解析,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類(圖文詳解)
這篇文章主要介紹了如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類,本文通過(guò)圖文并茂實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07