Java Stream中默认sort方法

来源

产品要求,对数据进行一定的排序处理,因为种种原因,通过数据库排序后,还需要使用程序进行排序。

疑问

使用stream 的排序方式是稳定排序么,即在排序条件值相同时,顺序会被打乱么

验证

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @author zgc
 * @date 2021/11/9 18:18
 */

@Data
@Accessors(chain = true)
class User{
    private String name;
    private Integer age;
}

public class Test {

    public static void main(String[] args) {

        List<User> list=new ArrayList<>();
        list.add(new User().setName("zhang").setAge(12));
        list.add(new User().setName("wang").setAge(12));
        list.add(new User().setName("li").setAge(12));
        list.add(new User().setName("zhao").setAge(12));
        list.add(new User().setName("liu").setAge(12));

        System.out.println(list);
        System.out.println(list.stream()
                .sorted(Comparator.comparing(User::getAge))
                .collect(Collectors.toList()));
    }

}

结果:

[User(name=zhang, age=12), User(name=wang, age=12), User(name=li, age=12), User(name=zhao, age=12), User(name=liu, age=12)]
[User(name=zhang, age=12), User(name=wang, age=12), User(name=li, age=12), User(name=zhao, age=12), User(name=liu, age=12)]

结论及铁证

是稳定排序的,点入sorted方法,说明如下

For ordered streams, the sort is stable.

说中文就是:对于已经排序的流,排序结果是稳定的


版权声明:本文为qq_34428553原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。