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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM