java1.8中stream的使用

  • 2019 年 10 月 6 日
  • 筆記

一起尽在代码中,大家可以参考代码理解stream的各种操作

先把一些正常的中间条件以及结束条件罗列一下

Intermediate(中间操作): map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered

Terminal(结束操作): forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator

Short-circuiting(快速匹配): anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 limit


package org.gfu.base.stream;    import java.util.*;  import java.util.stream.Collectors;  import java.util.stream.Stream;    /**   * jdk1.8 stream application   *   * https://stackify.com/streams-guide-java-8/   * @author [email protected] | [email protected] | 有问题可以邮箱或者github联系我   * @date 2019/9/22 12:48   */  public class StreamMain {        private static final int HASH_MAP_INIT_SIZE = 16;        public static void main(String[] args) {          Map map = new HashMap(HASH_MAP_INIT_SIZE);          listStreamHandler03(StreamUnit.getStreamUnit());          mapStreamHandler(map);        }        /**       * stream basic operation       *       * @param list       */      private static void listStreamHandler(List<StreamUnit> list) {          List<String> result = list                  .stream()                  .filter(i -> i.name.equals("zhangsan"))                  .map(i -> {                      StreamUnit su = new StreamUnit();                      su.name = i.name;                      su.des = i.des;                      return su;                  })                  .flatMap(i -> {                      String[] ss = i.name.split("");                      return Stream.of(ss);                  })                  .skip(2)                  .limit(5)  //                .peek()  //                .collect(Collectors.toSet())                  .collect(Collectors.toList());            System.out.println(result);      }        /**       * flatMap and reduce       *       * @param list       */      private static void listStreamHandler01(List<StreamUnit> list) {          Optional<String> result = list                  .stream()                  .flatMap(i -> Stream.of(i.name.split("")))                  .reduce(String::concat);          System.out.println(result);      }        /**       * reduce params:{startValue, result , item}       *       * @param list       */      private static void listStreamHandler02(List<StreamUnit> list) {          String result = list                  .stream()                  .flatMap(i -> Stream.of(i.name.split("")))                  .skip(4)                  .reduce("fadsf", String::concat);          System.out.println(result);      }        /**       * reduce params:{object, result , item}       *       * @param list       */      private static void listStreamHandler03(List<StreamUnit> list) {          List<StreamUnit> initList = new ArrayList<>(1);          List<StreamUnit> result = list.stream()                  .reduce(initList, (acc, i) -> {                      System.out.println(acc);                      StreamUnit su = new StreamUnit();                      su.name = i.toString();                      acc.add(su);                      return acc;                  }, (u, i) -> u);            System.out.println(result);      }        private static void mapStreamHandler(Map map) {          map.entrySet().stream();      }  }  ``