java 8 Stream API 学习总结

       创建stream流的方法

      //1.可以通过Collection系列集合提供的stream()或者parallelStream()

        List<String> ls = new ArrayList<>();

        Stream<String> stream1 = ls.stream();

        //2.通过Arrays中的静态方法stream()获取数组流

        String[] strs = new String[10];

        Stream<String> s = Arrays.stream(strs);

        //3.通过Stream类中的静态方法of()

        Stream<String> streams = Stream.of("aa", "bb", "cc");

        //4.创建无限流

       

//4.1迭代

      

Stream<Integer> stream4 =  Stream.iterate(0,(x)->x+2);

 

public class TestStreamAPI2 {

    List<Employee> emps = Arrays.asList(

            new Employee("张三", 20, 2000),

            new Employee("李四 ", 30, 3000),

            new Employee("王五", 40, 4000),

            new Employee("赵六", 50, 5000),

            new Employee("田七", 60, 6000),

            new Employee("田七", 60, 6000),

            new Employee("田七", 60, 6000)

    );

 

    //筛选与切片

    //filter 接收lambda,从流中排除某些元素

    //limit 截断流,使其元素不超过给定的数量

    //skip(n) 跳过元素,返回一个扔掉了前n个元素的流,如果流中的元素不足n个,则返回一个空流

    //distinct 去重

    @Test

    public void test1() {

        emps.stream().filter((e) -> e.getAge() > 40).filter(e -> e.getSalary() > 5000).distinct().forEach((x) -> System.out.println(x));

        System.out.println("-----------");

        Set<String> se = new HashSet<>();

        se.add("q");

        se.add("w");

        se.add("e");

        se.add("r");

        se.stream().limit(2).forEach(e -> System.out.println(e));

    }

 

    /**

     * 映射

     * map--接收Lambda,将元素转换成其他形式提供信息,接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素

     * flatMap--接收一个函数作为参数,将流中的每个值换成另一个流,然后把所有流接成一个流

     */

    @Test

    public void test2() {

        List<String> ls = Arrays.asList("aaa","bbb","ccc");

        ls.stream().forEach(e->System.out.println(e.toUpperCase()));

        System.out.println(ls.toString());

        System.out.println("-----------------");

        ls.stream().map(x->x.toUpperCase()).forEach(System.out::println);

        System.out.println(ls.toString());

    }

    /**

     * 排序

     * sorted() -- 自然排序

     * sorted(Comparator com) -- 定制排序

     */

    @Test

    public void test3(){

        List<String> ls = Arrays.asList("ccc","aaa","bbb","ddd");

        ls.stream().sorted().forEach(System.out::println);

    }

 

 

/**

     * allMatch -- 查找与匹配

     * anyMatch -- 检查是否至少匹配一个元素

     * noneMatch -- 检查是否没有匹配所有元素

     * findFirst -- 返回第一个元素

     * findAny -- 返回当前流中的任意元素

     * count -- 返回流中元素的总个数

     * max -- 返回流中最大值

     * min -- 返回流中最小值

     */

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值