您的位置:首页 > 编程语言 > Java开发

原来 Java8 Stream 中的排序是插入排序

2016-08-25 16:09 453 查看
写了小程序,验证 Java8 Steam sort是如何实现

package com.pnp.tryJ8col;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {

Stream.of("3", "1", "5", "4", "2")
.sorted((s1, s2) -> {
System.out.printf("sort: %s; %s\n", s1, s2);
return s1.compareTo(s2);
})
.map(s -> {
System.out.println("map: " + s);
return s;
})
.forEach(s -> System.out.println("forEach: " + s));
}
}


输出结果如下:

sort: 1; 3

sort: 5; 1

sort: 5; 3

sort: 4; 3

sort: 4; 5

sort: 2; 4

sort: 2; 3

sort: 2; 1

map: 1

forEach: 1

map: 2

forEach: 2

map: 3

forEach: 3

map: 4

forEach: 4

map: 5

forEach: 5

结论:

1) sort 完结后,管道才继续执行

2) sort是插入排序(从元素比较的顺序可以看出,插入位置通过二分搜索寻找)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java