Stream流

1.单列集合和数组可以直接调用stream()。
2.双列集合不能直接调用stream,可以转换成单列结合调用(keySet or entrySet)
**

Stream流的中间方法

**
1.中间方法返回新的Stream流,原来的Stream流只使用一次,建议使用链式编程。
2.修改Stream流中的数据,不会影响原来集合和数组中的数据。

filter 过滤
limit 获取前几个元素
skip 跳过前几个元素
distinct 元素去重 底层利用hashSet,依赖hashCode和equals方法
concat 合并a和b为一个流
map

ArrayList<String> arr = new ArrayList<>();
       Collections.addAll(arr,"张无忌-12","周芷若-18","李四-88");

       arr.stream().map(new Function<String, Integer>() {
           @Override
           public Integer apply(String s) {
               String sAge = s.split("-")[1];
               Integer age = Integer.valueOf(sAge);
               return age;
           }
       }).forEach(a-> System.out.println(a));

        arr.stream().map(s-> Integer.valueOf(s.split("-")[1])).forEach(a-> System.out.println(a));

**

Stream流的终结方法

**
void forEach() 遍历
long count() 统计
toArray() 收集流中的数据放到数组中
collect

String[] a =  arr.stream().toArray(new IntFunction<String[]>() {
            @Override
            public String[] apply(int value) {
                return new String[value];
            }
        });
        String[] a =  arr.stream().toArray(value->new String[value]);
ArrayList<String> arr = new ArrayList<>();
       Collections.addAll(arr,"张无忌-男-12","周芷若-女-18","李四-男-88");
       arr.stream().filter(s->s.split("-")[1].equals("男"))
               .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.valueOf(s.split("-")[2]);
                           }
                       })
               );




        arr.stream().filter(s->s.split("-")[1].equals("男"))
                .collect(Collectors.toMap(s->s.split("-")[0], s->Integer.valueOf(s.split("-")[2])));

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值