Stream
程序员文章站
2022-05-22 19:22:00
...
java8新特性 - stream
1.流是什么
JDK1.8引入的新成员,以声明方式处理集合数据
2.流的组成
数据源 -> 中间操作 -> 终端操作
cart -> filter -> sorted -> map -> collect
3.流操作分类
4.流的构建
4.1 由值创建流
/**
* 由数值直接构建流
*/
public void streamFromValue(){
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
stream.forEach(System.out::println);
}
4.2 由数组创建流
/**
* 通过数组构建流
*/
public void streamFromArray(){
int[] numbers = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(numbers);
stream.forEach(System.out::println);
}
4.3 由文件生成流
/**
*通过文件生成流
*/
public void streamFromFile() throws IOException {
Stream<String> stream = Files.lines(
Paths.get("F:\\sell\\src\\main\\java\\com\\imooc\\service\\impl\\StreamConstructor.java"));
stream.forEach(System.out::println);
}
4.4 由函数生成流(无限流)
/**
*通过函数生成流(无线流)
*/
public void streamFromFunction(){
Stream<Integer> stream = Stream.iterate(0, n -> n + 2);
//用limit来限制
Stream.generate(Math::random).limit(100).forEach(System.out::println);
stream.forEach(System.out::println);
}
5.收集器
5.1简介
将流中的元素累积成一个结果,作用于终端操作collect()上
collect / Collector / Collectors
5.2预定义收集器功能
1. 将流元素归约和汇总为一个值
2. 将流元素分组
3. 将流元素分区
public class StreamCollector {
static ArrayList<Integer> list = new ArrayList<Integer>();
{
list.add(1);
list.add(2);
list.add(3);
list.add(4);
}
public void toList(){
list.stream()
.filter(i -> i > 1)
.collect(Collectors.toList());
}
/**
* 分组
*/
public void group(){
//Map<分组条件 , 结果集合>
Map<Integer, List<Integer>> map = list.stream()
.collect(
Collectors.groupingBy(i -> i));
//用JSON输出
}
/**
* 分区
*
*/
public void partition(){
Map <Boolean, List<Integer>> collect = list.stream()
.collect(
Collectors.partitioningBy(
i -> i > 20
)
);
//用JSON输出
}
}
上一篇: Java8 新特性 之 其他新特性
下一篇: Java8新特性
推荐阅读
-
完美解决failed to open stream: HTTP request failed!_PHP教程
-
如何解决php写入文件权限失败 file_put_contents: failed to open stream: Permission denied
-
第18章 Stream(流)类
-
C#实现Stream与byte[]之间的转换实例教程
-
.Net笔记:System.IO之Stream的使用详解
-
Java8中Stream使用的一个注意事项
-
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
-
.Net笔记:System.IO之Stream的使用详解
-
PHP使用stream_context_create()模拟POST/GET请求的方法
-
C#实现Stream与byte[]之间的转换实例教程