關(guān)于stream().sorted()以及java中常用的比較器排序
1.sorted():無參數(shù)的情況下
需要對應(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)行還需的寫法
采用表達(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)文章
SpringBoot快速入門及起步依賴解析(實(shí)例詳解)
SpringBoot?是由?Pivotal?團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化?Spring?應(yīng)用的初始搭建以及開發(fā)過程,這篇文章主要介紹了SpringBoot快速入門及起步依賴解析,需要的朋友可以參考下2022-10-10
微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù)
這篇文章主要介紹了微服務(wù)如何通過feign.RequestInterceptor傳遞參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié)
本篇文章主要介紹了springboot 使用Spring Boot Actuator監(jiān)控應(yīng)用小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
IDEA生成項(xiàng)目后出現(xiàn)的iml和idea文件問題
這篇文章主要介紹了IDEA生成項(xiàng)目后出現(xiàn)的iml和idea文件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Maven中生命周期深度解析與實(shí)戰(zhàn)指南
這篇文章主要為大家詳細(xì)介紹了Maven 生命周期實(shí)戰(zhàn)指南,包含核心概念、階段詳解、Spring Boot 特化場景及企業(yè)級實(shí)踐建議,希望對大家有一定的幫助2025-08-08
Springboot基礎(chǔ)之RedisUtils工具類
本文來說下RedisUtils工具類,主要介紹了整合Redis、MyBatis,封裝RedisUtils工具類等知識,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05

