一.基本介绍
在Java 8 中, 集合接口有两个方法来生成流:
stream() − 为集合创建串行流 - (线程是安全的)
parallelStream() − 为集合创建并行流 - (底层是多线程处理,线程不安全(可以解决),数据量大业务复杂使用)
二.基本使用
使用示例:
数据: List<Integer> list= Arrays.asList(1, 2, 3, 4, 5, 6);
使用: List<Integer> list1 = list.stream().filter( i -> i < 4 ).collect(Collectors.toList());
list // 列表数据
.stream() // 生成流(然后开始对数据进行操作)
.filter() // 中间操作(对数据 去 重复/筛选 等操作)
.collect() // 终端操作(终止流,对数据进行最终 统计/查找/获取最大值 等操作)
1.常用中间操作
过滤 filter()
去重 distinct() -> list.stream().distinct()
返回指定个数 limit() -> list.stream().limit(2)
跳过元素 skip() -> list.stream().skip(2)
流映射 map() -> list.stream().map(String::toUpperCase)
匹配所有 allMatch() -> list.stream().allMatch(i -> i > 3) -> (返回 boolean)
匹配其中一个 anyMatch() -> 返回 boolean
全部不匹配 noneMatch() -> 返回 boolean
2.常用终端操作
返回 列表( List ): list.stream().filter( i -> i < 4 ).collect(Collectors.toList())
返回 集合( Set ): list.stream().filter( i -> i < 4 ).collect(Collectors.toSet())
统计: list.stream().count()
查找( findFirst() / findAny() ): list.stream().filter(i -> i > 3).findFirst()
forEach()遍历: list.stream().filter( i -> i < 4 ).forEach(System.out::println);