超强的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

相关文章
|
9天前
|
安全 Java API
Stream流式编程,让代码变优雅
Stream流式编程,让代码变优雅
|
5月前
|
存储 Java API
Stream流
Stream流
55 1
|
4月前
|
存储 Java API
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
Java——Stream流(1/2):Stream流入门、Stream流的创建(认识Stream、体验Stream流、Stream流的使用步骤、获取Stream流的方法)
62 0
|
4月前
|
API
Stream流知识
Stream流知识
23 0
|
12月前
|
Java
java流是指在Java中用来读写数据的一组有序的数据序列,它可以将数据从一个地方带到另一个地方。java流分为输入流和输出流,输入流是从源读取数据的流,而输出流是将数据写入到目的地的流。Java流又可以分为字节流和字符流,字节流读取的最小单位是一个字节(1byte=8bit),而字符流一次可以读取一个字符(1char = 2byte = 16bit)。Java流还可以分为节点流和处理流,节点流是直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的一种流。
120 0
|
5月前
|
Java
Stream流教程
Stream流教程
57 0
I/O流
IO流:I的全称是Input,O的全称是Output。表示读取,流可以看做是程序传输数据的通道。 作用:解决程序请求资源,输出资源的问题。
50 0
|
存储 Java
Stream流式编程
Stream流式编程
130 0
|
Java 数据处理
常用Stream流
常用Stream流
139 0