Stream流是java支持的一种流水线式处理数据的方式,也是jdk8的一种特性。
Collection体系下有两个方法可以获取获取Stream(直接通过集合对象调用方法获取即可)
- stream() − 为集合创建串行流。【线程是安全的】
- parallelStream() − 为集合创建并行流。【底层是多线程处理,线程不安全,可以设置线程。可以解决线程安全】
使用场景:数据量大,且业务复杂,用并行,数据量少且业务简单,用串行。
public class StreamTest {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(4, 3, 4, 5, 2, 1);
final Stream<Integer> stream = list.stream();//获取串行流对象
//将流中元素自然排序
//stream.sorted().forEach(System.out::println);
//去重
stream
.distinct()//将流中元素去重
.sorted()//将流中元素排序
.forEach(System.out::println);
//过滤 //过滤掉大于3的所有元素
//stream.filter(t -> t > 3).forEach(System.out::println);
//将stream流对象转换为List对象
//final List<Integer> collect = stream.collect(Collectors.toList());
//System.out.println(collect);
//合并,拼接
final List<String> list1 = Arrays.asList("小易", "boyas", "星河", "angel651");
//调用parallelStream方法获取并行流
final Stream<String> parallelStream = list1.parallelStream();
//将parallelStream中元素进行拼接【元素类型必须是string类型】
final String collect1 = parallelStream.collect(Collectors.joining("=>"));
System.out.println(collect1);
}
}