Java stream 排序

时间:2025-04-02 20:30:37

数字排序

    public static void main(String[] args) {
        List<Person> userList = new ArrayList<>();
        (new Person("1",25));
        (new Person("2",41));
        (new Person("33",30));
        (new Person("11",100));
        (new Person("55",30));
        (new Person("22",35));
 
        List<Person> collect =
                ().sorted((Person::getAge).reversed()).collect(());
        (collect);
 
        List<Person> collect2 =
                ().sorted((Person::getAge)).collect(());
        (collect2);
 
    }
 
控制台输出:
[Person(name=11, age=100), Person(name=2, age=41), Person(name=22, age=35), Person(name=33, age=30), Person(name=55, age=30), Person(name=1, age=25)]
[Person(name=1, age=25), Person(name=33, age=30), Person(name=55, age=30), Person(name=22, age=35), Person(name=2, age=41), Person(name=11, age=100)]

以中文排序

    public static void main(String[] args) {
        List<Person> userList = new ArrayList<>();
        (new Person("1",25));
        (new Person("2",41));
        (new Person("33",30));
        (new Person("11",100));
        (new Person("55",30));
        (new Person("22",35));
 
 
        List<Person> collect3 =
                ().sorted((Person::getName)).collect(());
        (collect3);
 
        List<Person> collect4 = ().sorted((e1, e2) -> {
            return ((()), (()));
        }).collect(());
        (collect4);
    }
 
控制台输出:
[Person(name=1, age=25), Person(name=11, age=100), Person(name=2, age=41), Person(name=22, age=35), Person(name=33, age=30), Person(name=55, age=30)]
[Person(name=1, age=25), Person(name=2, age=41), Person(name=11, age=100), Person(name=22, age=35), Person(name=33, age=30), Person(name=55, age=30)]

排序字段为null时

List<Student> students = new ArrayList<>();
Student student1 = new Student("六年级","Math","小张",1D);
(student1);
Student student2 = new Student("三年级上","English","小钱",8D);
(student2);
Student student3 = new Student(null,"Chinese","小孙",6D);
(student3);

List<Student> collect = ().sorted((Student::getGrade).reversed()).collect(());

控制台:
Exception in thread "main" 
	at (:1155)
	at (:111)
	at $comparing$77a9974f$1(:469)
	at $(:5185)
	at (:360)
	at (:220)
	at (:1512)
	at $(:348)
	at (:483)
	at (:472)
	at $(:708)
	at (:234)
	at (:499)
	at .(:29)