超强的Stream流了解一下

简介: 超强的Stream流了解一下

在这里插入图片描述

演示点一:

筛选年龄小于21,且薪水大于2000的数据。

第一种写法:
List<User> userList = Arrays.asList(
                new User("小明", 20, 3000),
                new User("小红", 20, 2000),
                new User("小张", 21, 3000)
        );
        Predicate<User> predicate1 = user -> user.getAge() < 21;
        Predicate<User> predicate2 = user -> user.getSalary() > 2000;

        List<User> collect = userList.stream()
                .filter(predicate1)
                .filter(predicate2)
                .collect(Collectors.toList());
        System.out.println("collect = " + collect);
第二种写法:
List<User> userList = Arrays.asList(
                new User("小明", 20, 3000),
                new User("小红", 20, 2000),
                new User("小张", 21, 3000)
        );

        List<User> collect = userList.stream()
                .filter(user -> user.getAge() < 21)
                .filter(user -> user.getSalary() > 2000)
                .collect(Collectors.toList());
        System.out.println("collect = " + collect);
第三种写法:
        List<User> userList = Arrays.asList(
                new User("小明", 20, 3000),
                new User("小红", 20, 2000),
                new User("小张", 21, 3000)
        );
        Predicate<User> predicate1 = user -> user.getAge() < 21;
        Predicate<User> predicate2 = user -> user.getSalary() > 2000;

        List<User> collect = userList.stream()
                .filter(predicate1.and(predicate2))
                .collect(Collectors.toList());
        System.out.println("collect = " + collect);

collect = [User(name=小明, age=20, salary=3000)]

演示点二:

筛选年龄小于21,或薪水大于2000的数据。

List<User> userList = Arrays.asList(
                new User("小明", 20, 3000),
                new User("小红", 20, 2000),
                new User("小张", 21, 3000)
        );
        Predicate<User> predicate1 = user -> user.getAge() < 21;
        Predicate<User> predicate2 = user -> user.getSalary() > 2000;

        List<User> collect = userList.stream()
                .filter(predicate1.or(predicate2))
                .collect(Collectors.toList());
        System.out.println("collect = " + collect);

collect = [User(name=小明, age=20, salary=3000), User(name=小红, age=20, salary=2000), User(name=小张, age=21, salary=3000)]

演示点三:

filter的使用:筛选字符串长度大于等于5的字符串。

List<String> list = Arrays.asList("Hello", "World", "Java");
        list.stream()
                .filter(str -> str.length() >= 5)
                .forEach(str -> System.out.println(str));

Hello
World

演示点四

limit 截取流中的元素

        List<String> list = Arrays.asList("Hello", "World", "Java");
        list.stream()
                .limit(2)
                .forEach(str -> System.out.println(str));

Hello
World

演示点五

sorted 排序,默认进行升序排列

List<Integer> list = Arrays.asList(1,6,9,3,8,12,0,29);
        list.stream()
                .sorted()
                .forEach(num -> System.out.println(num));

0
1
3
6
8
9
12
29

降序排列:

    List<Integer> list = Arrays.asList(1,6,9,3,8,12,0,29);
        list.stream()
                .sorted(Comparator.reverseOrder())
                .forEach(num -> System.out.println(num));

29
12
9
8
6
3
1
0

演示点六

max 求最大值,min 最小值, count 长度

List<Integer> list = Arrays.asList(1, 6, 9, 3, 8, 12, 0, 29);
        System.out.println(list.stream()
                .max(Integer::compareTo)
                .get());
        System.out.println(list.stream()
                .min(Integer::compareTo)
                .get());
        System.out.println(list.stream()
                .count());

29
0
8

演示点七

stream的map操作:对流操作,返回一个新的流。

List<Integer> list = Arrays.asList(1, 6, 9, 3, 8, 12, 0, 29);
        list.stream()
                .map(num -> num + 10)
                .forEach(num -> System.out.println(num));

演示点八

reduce 根据指定的计算模型将Stream中的值计算得到一个最终结果。

    List<Integer> list = Arrays.asList(1, 6, 9, 3, 8, 12, 0, 29);
        System.out.println(list.stream()
                .reduce((sum, num) -> sum + num).get());

68

相关文章
|
4月前
|
安全 Java API
Stream流式编程,让代码变优雅
Stream流式编程,让代码变优雅
|
8月前
|
存储 Java API
Stream流
Stream流
71 1
|
4月前
|
安全 Java 测试技术
总结|Stream流技术在真实案例中的应用
本文不仅提供了理论上的讲解,还通过实际代码示例展示了如何应用Stream API来解决常见的编程问题。
|
7月前
|
C++
C++对C的改进和拓展:I/O 流
C++对C的改进和拓展:I/O 流
31 1
|
8月前
|
Java 容器
Stream 流常见基本操作
Stream 流常见基本操作
|
7月前
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
108 0
|
7月前
|
API
Stream流知识
Stream流知识
46 0
|
8月前
|
Java
Stream流教程
Stream流教程
85 0
|
Java 测试技术
stream拓展
stream拓展
40 0
|
存储 Java
Stream流式编程
Stream流式编程
145 0