JDK8-Stream

package com.pd.kill.test;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamTest {
    public static void main(String args[]){
        String[] arrays={"a","b","c","d","e","a"};
        List<String> list= Arrays.asList(arrays);

        //  过滤重复元素, 根据equals()来判断
        Stream<String> distinct = list.stream().distinct();
        distinct.forEach(dis -> System.out.println(dis));

        //  filter中为true的元素会保留
        List<String> collect = list.stream().filter(arr -> "a".equals(arr)).collect(Collectors.toList());
        System.out.println(collect);//[a, a]

        //  只保留filter中返回true的元素
        List<String> collect1 = list.stream().filter(arr -> {
            if ("a".equals(arr)) {
                return false;
            }
            return true;
        }).collect(Collectors.toList());
        System.out.println(collect1);//[b, c, d, e]

        //  返回列表前几位,超出则返回所有,小于0则报错
        List<String> collect2 = list.stream().limit(2).collect(Collectors.toList());
        System.out.println(collect2);//[a, b]

        //  返回循环后的数据或调类的方法
        List<String> collect3 = list.stream().map(arr -> arr + "&").collect(Collectors.toList());
        System.out.println(collect3);//[a&, b&, c&, d&, e&, a&]
        List<String> collect4 = list.stream().map(String::toString).collect(Collectors.toList());
        System.out.println(collect4);//[a, b, c, d, e, a]
        List<String> collect5 = list.stream().map(arr -> {
            System.out.print("占位符 ");
            return arr.concat("*");
        }).collect(Collectors.toList());
        System.out.println(collect5);//[a*, b*, c*, d*, e*, a*]

        String[] arrays2={"aa","bb","cc","dd","ee","aa"};
        list= Arrays.asList(arrays2);
        //  flatMap
        List<String> collect6 = list.stream().flatMap(arr -> Arrays.stream(arr.split(""))).collect(Collectors.toList());
        System.out.println(collect6);//[a, a, b, b, c, c, d, d, e, e, a, a]

        //  flatMap2
        List<String> collect7 = list.stream().map(arr -> arr.split("")).flatMap(Arrays::stream).collect(Collectors.toList());
        System.out.println(collect7);//[a, a, b, b, c, c, d, d, e, e, a, a]

        //  检测是否全都满足条件
        boolean flag = list.stream().allMatch(arr -> arr.length() > 1);
        System.out.println(flag);

        //  检测是否有一个满足条件
        boolean flag2 = list.stream().anyMatch(arr -> arr.length() > 1);
        System.out.println(flag2);

        //  检测是否存在不满足条件的元素
        boolean flag3 = list.stream().noneMatch(arr -> arr.length() > 1);
        System.out.println(flag3);

        //  返回指定类型
        TreeSet<String> collect8 = list.stream().collect(Collectors.toCollection(TreeSet::new));
        System.out.println(collect8);//[aa, bb, cc, dd, ee]

        //  返回分组类型, 等待场景
        Map<Boolean, List<String>> collect9 = list.stream().collect(Collectors.groupingBy(arr -> "aa".equals(arr)));
        System.out.println(collect9);//{false=[bb, cc, dd, ee], true=[aa, aa]}

        //  根据分割符及样式返回字符串  delimiter,prefix,suffix
        String collect10 = list.stream().collect(Collectors.joining(",", "{", "}"));
        System.out.println(collect10);

    }

//    public int fun(int x){
//        return x -> 2*x;
//    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值