1、Stream API说明
2、Stream的实例化
3、Stream的中间操作
3.1、筛选和切片
3.2、映射
3.3、排序
4、Stream的终止操作
4.1、匹配与查找
4.2、归约
4.3、收集
1、Stream API说明 <--返回目录
Java8中有两个最为重要的改变。第一个是Lambda表达式,另外一个则是Stream API。
Stream API(java.util.stream)把真正的函数式编程风格引入到java中。这是目前为止对java类库最好的补充,因为Stream API 可以极大提高java程序员的生产力,让程序员写出高效率、干净、简洁的代码。
Stream是java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。也可以使用Stream API来并行执行操作。简言之,Stream API提供了一种高效且易于使用的处理数据的方式。
为什么使用Stream API?
- 实际开发中,项目中多数数据源都来自于mysql、oracle等。但现在数据源可以更多了,有mongdb、redis等,而这些nosql的数据就需要java层面去处理。
- Stream和Collection集合的区别:Collection是一种静态的内存数据结构,而Stream是有关计算的。前者是主要面向内存,存储在内存中,后者主要是面向CPU,通过CPU实现计算。
什么是Stream?
Stream的操作三步骤
2、Stream的实例化 <--返回目录
@Test public void test() { // 创建Stream方式一: 集合, Collection的方法 default Stream<E> stream() List<String> list = new ArrayList<>(); list.add("aaa"); Stream<String> stream = list.stream(); // 创建Stream方式二: 数组 // Arrays.stream()接收基本类型数组 int[] arr1 = new int[] {1,2,3}; IntStream inStream = Arrays.stream(arr1); // Arrays.stream()接收非基本类型数组 Integer[] arr2 = new Integer[] {1,2,3}; Stream<Integer> stream2 = Arrays.stream(arr2); // 创建Stream方式三: Stream.of() Stream<Integer> stream3 = Stream.of(1,2,3); // 无限流: 迭代 // 遍历前10个偶数 Stream.iterate(0, t -> t + 2).limit(10).forEach(System.out::println); // 无限流: 生成 Stream.generate(Math::random).limit(10).forEach(System.out::println); }
3、Stream的中间操作 <--返回目录
3.1、筛选和切片 <--返回目录
3.2、映射 <--返回目录
3.3、排序 <--返回目录
4、Stream的终止操作 <--返回目录
4.1、匹配与查找 <--返回目录
4.2、归约 <--返回目录
@Test public void test() { // 数组求和 List<Integer> list = Arrays.asList(1,2,3,4,5); int sum = list.stream().reduce(0, Integer::sum); System.out.println(sum); }
4.3、收集 <--返回目录
---