来源
产品要求,对数据进行一定的排序处理,因为种种原因,通过数据库排序后,还需要使用程序进行排序。
疑问
使用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版权协议,转载请附上原文出处链接和本声明。