zoukankan      html  css  js  c++  java
  • java8中Stream数据流

    筛选重复的元素

    Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流。

    例如,以下代码会筛选出列表中所有的偶数,并确保没有 重复。

    List<Dish> dishes = Dish.menu.stream()
    .filter(Dish::isVegetarian)
    .collect(Collectors.toList());

    跳过指定数量的元素

    Stream 支持 skip(n) 方法,返回一个扔掉了前n个元素的流。如果流中元素不足n个,则返回一 个空流。limit(n) 和 skip(n) 是互补的

    List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回
    .collect(Collectors.toList());
    dishSkip.forEach(System.out::println);
     

    map 操作

    Stream 支持 map 方法,它会接受一个函数作为参数。这个函数会被应用到每个元素上,并将其映 射成一个新的元素

    List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());

    元素求和

    List<Integer> numbers = Arrays.asList(3,4,5,1,2);
    int sum1 = numbers.stream().reduce(0,(a, b) -> a + b);
    System.out.println(sum1);
     
    int sum2 = numbers.stream().reduce(0,Integer::sum);
    System.out.println(sum2);

    最大值

    int max = numbers.stream().reduce(0,Integer::max);
    System.out.println(max);

    最小值

    //reduce不接受初始值,返回一个Optional对象(考虑流中没有任何元素的情况)
    Optional<Integer> min = numbers.stream().reduce(Integer::min);
    min.ifPresent(System.out::println);
     
  • 相关阅读:
    MySQL索引底层的实现
    mysql索引深入优化
    explain详解与索引最佳实践
    (MYSQL)回表查询原理,利用联合索引实现索引覆盖
    为什么重复值高的字段不能建索引(比如性别字段等)
    Spring的事务
    为什么要用Redis?Redis为什么这么快?
    spring AOP
    钩子教程
    钩子教程
  • 原文地址:https://www.cnblogs.com/clovejava/p/7674822.html
Copyright © 2011-2022 走看看