關(guān)于stream().sorted()以及java中常用的比較器排序
1.sorted():無參數(shù)的情況下
需要對應的Bean實現(xiàn)Comparable 接口
package com.itheima.demo18_擴展字符串排序;
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_擴展字符串排序;
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流的傳參格式進行傳參
package com.itheima.demo18_擴展字符串排序;
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_擴展字符串排序;
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進行還需的寫法
采用表達式
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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
每天練一練Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù)
這篇文章主要介紹了Java函數(shù)與算法Math函數(shù)總結(jié)與字符串轉(zhuǎn)換整數(shù),每天練一練,水平在不知不覺中提高,需要的朋友快過來看看吧2021-08-08Java concurrency集合之ArrayBlockingQueue_動力節(jié)點Java學院整理
ArrayBlockingQueue是數(shù)組實現(xiàn)的線程安全的有界的阻塞隊列。下面通過本文給大家介紹Java concurrency集合之ArrayBlockingQueue的相關(guān)知識,感興趣的朋友一起看看吧2017-06-06MyBatis與SpringMVC相結(jié)合實現(xiàn)文件上傳、下載功能
這篇文章主要介紹了MyBatis與SpringMVC相結(jié)合實現(xiàn)文件上傳、下載功能的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06SpringBoot開發(fā)技巧啟動時配置校驗實現(xiàn)示例
這篇文章主要為大家介紹了SpringBoot開發(fā)在啟動時自動配置校驗的實現(xiàn)示例及原理解析,有需要的朋友可以借鑒參考下希望能夠有所幫助2021-10-10如何使用IDEA的groovy腳本文件生成帶JPA注解的實體類(圖文詳解)
這篇文章主要介紹了如何使用IDEA的groovy腳本文件生成帶JPA注解的實體類,本文通過圖文并茂實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07