Java中Stream简明使用教程

  都JDK15了,你还在使用java8?那好,你知道jdk8的Strean都有哪些用法吗...

  java8,永远滴神,下面我们就简要说一下stream的一些常用方法,跟着我的节奏...冲!

  2.1、Java8是一个非常成功的版本,尤其是改版本中的Stream搭配Lambda,使得我们更便利的进行集合操。

  Stream可以将需要处理的集合元素看做是流操作,是对结合对象功能的一个增强,Stream API借助同时出现的Lambda表达式

  可以更为便利地对集合进行:筛选、排序、聚合、分组等操作。

  2.2、Stream的几个特性:

  ① 不存储数据,只是对数据的记性运算

  ② 不会改变数据源,但是可以产生一个新的集合或其他值

  ③ 它的工作流程是:获取数据流 -> 进行制定运算 -> 产生新的数据流 -> 支持数据新的数据结果

  List integerList=Arrays.asList(1,2,3,4,5,6,7,8,9,1,2,4);

  System.out.println("***********************遍历输出****************************");

  // 这里也可以不使用stream,直接使用forEach

  integerList.stream().forEach(System.out :: println);

  Java

  System.out.println("***********************获取数量****************************");

  long countRlt=integerList.stream().count();

  System.out.println(countRlt);

  Java

  System.out.println("***********************获取最大值****************************");

  Integer maxRlt=integerList.stream().max(Integer::compareTo).get();

  System.out.println(maxRlt);

  System.out.println("***********************获取最小值****************************");

  Integer minRlt=integerList.stream().min(Integer::compareTo).get();

  System.out.println(minRlt);

  Java

  System.out.println("***********************任意条件检测****************************");

  System.out.println(integerList.stream().anyMatch(item -> item > 7));

  System.out.println("***********************全部条件检测****************************");

  boolean allMatchRlt=integerList.stream().allMatch(item -> item % 2==0);

  System.out.println(allMatchRlt ? "集合中全部都是偶数" : "集合中并不全是偶数");

  System.out.println("***********************条件遍历输出****************************");

  integerList.stream().filter(item -> item > 5).forEach(System.out :: println);

  System.out.println("***********************条件输出第一个值****************************");

  Integer rltFir=integerList.stream().filter(item -> item > 6).findFirst().get();

  System.out.println(rltFir);

  System.out.println("***********************条件输出任意值****************************");

  Integer rltAny=integerList.parallelStream().filter(item -> item > 6).findAny().get();

  System.out.println(rltAny);

  System.out.println("***********************条件筛选并放入新容器中****************************");

  List integerListFilter=integerList.stream().filter(item -> item >=6).collect(Collectors.toList());

  integerListFilter.forEach(System.out :: println);

  Java

  System.out.println("***********************去除重复值并输出****************************");

  Stream integerStream=integerList.stream().distinct();

  integerStream.forEach(System.out :: println);

  Java

  System.out.println("***********************返回固定长度****************************");

  integerList.stream().limit(3).forEach(System.out :: println);

  System.out.println("***********************去掉指定长度的元素****************************");

  integerList.stream().skip(3).forEach(System.out :: println);

  Java

  System.out.println("***********************规约****************************");

  System.out.println("集合中所有元素之和为:" + integerList.stream().reduce(0, (a, b) -> a + b ));

  System.out.println("集合中所有元素之和为:" + integerList.stream().reduce(0, Integer::sum));

  System.out.println("集合中最大的数为:" + integerList.stream().reduce(0, Integer :: max));

  Java

  System.out.println("***********************map映射****************************");

  List streamHandleEntityList=new ArrayList<>();

  for(int i=0;i<10;i++){

  StreamHandleEntity streamHandleEntityTmp=new StreamHandleEntity();

  streamHandleEntityTmp.setName("name" + i);

  streamHandleEntityTmp.setPassword("password" + i);

  streamHandleEntityTmp.setAge(i * 10);

  streamHandleEntityTmp.setSex(i%2==0 ? "man" : "women");

  streamHandleEntityList.add(streamHandleEntityTmp);

  }

  streamHandleEntityList.stream().map(StreamHandleEntity::getName).collect(Collectors.toList()).forEach(System.out :: println);

  System.out.println("***********************map映射,多参数****************************");

  streamHandleEntityList.stream().map(item ->{

  StreamHandleDTO streamHandleDTO=new StreamHandleDTO();

  streamHandleDTO.setName(item.getName());

  streamHandleDTO.setSex(item.getSex());

  return streamHandleDTO;

  }).collect(Collectors.toList()).forEach(System.out :: println);

  Java

  System.out.println("***********************分组****************************");

  Map<String, List> groupRlt=streamHandleEntityList.stream().collect(Collectors.groupingBy(StreamHandleEntity::getSex));

  System.out.println(groupRlt);

  List manDatas=groupRlt.get("man");

  System.out.println(manDatas);

  Java

  System.out.println("***********************结合****************************");

  String names=streamHandleEntityList.stream().map(StreamHandleEntity::getName).collect(Collectors.joining(" -- "));

  System.out.println(names);

  Java

  System.out.println("***********************排序****************************");

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

  System.out.println("***********************指定排序****************************");

  // 指定项正序

  List sortRlt=streamHandleEntityList.stream().sorted(Comparatorparing(StreamHandleEntity::getAge)).collect(Collectors.toList());

  System.out.println(sortRlt);

  // 指定项倒序

  List sortReverseRlt=streamHandleEntityList.stream().sorted(Comparatorparing(StreamHandleEntity::getAge).reversed()).collect(Collectors.toList());

  System.out.println(sortReverseRlt);

上一篇:莫比乌斯反演


下一篇:Python 打印&字符串&切片&列表&元组