Stream的获取、中间方法、终结方法

admin2024-07-05  14

1、获取Stream流

Stream的获取、中间方法、终结方法,第1张

Stream的获取、中间方法、终结方法,第2张

单列集合:foreach完整版

Stream的获取、中间方法、终结方法,第3张

双列集合通过Ketset()、entryset()

Stream的获取、中间方法、终结方法,第4张

Stream的获取、中间方法、终结方法,第5张

数组的:通过Arrays

Stream的获取、中间方法、终结方法,第6张

Stream流的中间方法:链式编程,原stream流只能使用一次

Stream的获取、中间方法、终结方法,第7张

filter:

Stream的获取、中间方法、终结方法,第8张

limit、skip:

Stream的获取、中间方法、终结方法,第9张

distinct(有自定义对象需要重写hashCode和Equals方法)、contat(合并两个流)

Stream的获取、中间方法、终结方法,第10张

map:手动更改返回值类型

Stream的获取、中间方法、终结方法,第11张

Stream流的终结方法:

Stream的获取、中间方法、终结方法,第12张

Stream的获取、中间方法、终结方法,第13张

toArray方法:收集流中数据,放到数组中

Stream的获取、中间方法、终结方法,第14张

collect方法:把结果收集到集合中:list\set\Map

Stream的获取、中间方法、终结方法,第15张

toList和toSet: 两者区别set可以去重,

格式:collect(Collectors.tolist()/toSet())

// toList和toSet方法演示 
public class MyStream7 {
    public static void main(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            list1.add(i);
        }

        list1.add(10);
        list1.add(10);
        list1.add(10);
        list1.add(10);
        list1.add(10);

        //filter负责过滤数据的.
        //collect负责收集数据.
                //获取流中剩余的数据,但是他不负责创建容器,也不负责把数据添加到容器中.
        //Collectors.toList() : 在底层会创建一个List集合.并把所有的数据添加到List集合中.
        List<Integer> list = list1.stream().filter(number -> number % 2 == 0)
                .collect(Collectors.toList());

        System.out.println(list);

    Set<Integer> set = list1.stream().filter(number -> number % 2 == 0)
            .collect(Collectors.toSet());
    System.out.println(set);
}
}

Map:较为复杂

以例题为例子,

提取集合中的信息到map中,并筛选性别为男的元素,键为名字,年龄为值:

Stream的获取、中间方法、终结方法,第16张

完整版内部类写法:
        Map<String, Integer> map = list.stream().filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(new Function<String, String>() {
                    @Override
                    public String apply(String s) {
                        return s.split("-")[0];
                    }
                }, new Function<String, Integer>() {
                    @Override
                    public Integer apply(String s) {
                        return Integer.parseInt(s.split("-")[2]);
                    }
                }));
Lambda:
Map<String, Integer> map = list.stream().filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toMap( s-> s.split("-")[0], s -> Integer.parseInt(s.split("-")[2])));
        System.out.println(map);
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!