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

1、获取Stream流

单列集合:foreach完整版

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

数组的:通过Arrays

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

filter:

limit、skip:

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

map:手动更改返回值类型

Stream流的终结方法:

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

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

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中,并筛选性别为男的元素,键为名字,年龄为值:

ArrayList<String> list = new ArrayList<>();
Collections.addAll(list,"张三-男-21","cala-女-24","李四-男-27","王五-男-29","gaga-女-20");

完整版内部类写法:
        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);

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值