一、前言 都JDK15了,你还在使用java8?那好,你知道jdk8的Strean都有哪些用法吗。。。 java8,永远滴神,下面我们就简要说一下stream的一些常用方法,跟着我的节奏。。。冲!二、再说Stream 2。1、Java8是一个非常成功的版本,尤其是改版本中的Stream搭配Lambda,使得我们更便利的进行集合操。 Stream可以将需要处理的集合元素看做是流操作,是对结合对象功能的一个增强,StreamAPI借助同时出现的Lambda表达式 可以更为便利地对集合进行:筛选、排序、聚合、分组等操作。 2。2、Stream的几个特性: 不存储数据,只是对数据的记性运算 不会改变数据源,但是可以产生一个新的集合或其他值 它的工作流程是:获取数据流进行制定运算产生新的数据流支持数据新的数据结果 三、Stream的几种常见用法3。1、遍历输出ListIntegerintegerListArrays。asList(1,2,3,4,5,6,7,8,9,1,2,4);System。out。println(遍历输出);这里也可以不使用stream,直接使用forEachintegerList。stream()。forEach(System。out::println); Java 3。2、获取数量System。out。println(获取数量);longcountRltintegerList。stream()。count();System。out。println(countRlt); Java 3。3、获取最大值或最小值System。out。println(获取最大值);IntegermaxRltintegerList。stream()。max(Integer::compareTo)。get();System。out。println(maxRlt);System。out。println(获取最小值);IntegerminRltintegerList。stream()。min(Integer::compareTo)。get();System。out。println(minRlt); Java 3。4、条件检测或筛选System。out。println(任意条件检测);System。out。println(integerList。stream()。anyMatch(itemitem7));System。out。println(全部条件检测);booleanallMatchRltintegerList。stream()。allMatch(itemitem20);System。out。println(allMatchRlt?集合中全部都是偶数:集合中并不全是偶数);System。out。println(条件遍历输出);integerList。stream()。filter(itemitem5)。forEach(System。out::println);System。out。println(条件输出第一个值);IntegerrltFirintegerList。stream()。filter(itemitem6)。findFirst()。get();System。out。println(rltFir);System。out。println(条件输出任意值);IntegerrltAnyintegerList。parallelStream()。filter(itemitem6)。findAny()。get();System。out。println(rltAny);System。out。println(条件筛选并放入新容器中);ListIntegerintegerListFilterintegerList。stream()。filter(itemitem6)。collect(Collectors。toList());integerListFilter。forEach(System。out::println); Java 3。5、去重System。out。println(去除重复值并输出);StreamIntegerintegerStreamintegerList。stream()。distinct();integerStream。forEach(System。out::println); Java 3。6、截取System。out。println(返回固定长度);integerList。stream()。limit(3)。forEach(System。out::println);System。out。println(去掉指定长度的元素);integerList。stream()。skip(3)。forEach(System。out::println); Java 3。7、规约System。out。println(规约);System。out。println(集合中所有元素之和为:integerList。stream()。reduce(0,(a,b)ab));System。out。println(集合中所有元素之和为:integerList。stream()。reduce(0,Integer::sum));System。out。println(集合中最大的数为:integerList。stream()。reduce(0,Integer::max)); Java 3。8、映射System。out。println(map映射);ListStreamHandleEntitystreamHandleEntityListnewArrayList();for(inti0;i10;i){StreamHandleEntitystreamHandleEntityTmpnewStreamHandleEntity();streamHandleEntityTmp。setName(namei);streamHandleEntityTmp。setPassword(passwordi);streamHandleEntityTmp。setAge(i10);streamHandleEntityTmp。setSex(i20?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{StreamHandleDTOstreamHandleDTOnewStreamHandleDTO();streamHandleDTO。setName(item。getName());streamHandleDTO。setSex(item。getSex());returnstreamHandleDTO;})。collect(Collectors。toList())。forEach(System。out::println); Java 3。9、分组System。out。println(分组);MapString,ListStreamHandleEntitygroupRltstreamHandleEntityList。stream()。collect(Collectors。groupingBy(StreamHandleEntity::getSex));System。out。println(groupRlt);ListStreamHandleEntitymanDatasgroupRlt。get(man);System。out。println(manDatas); Java 3。10、结合System。out。println(结合);StringnamesstreamHandleEntityList。stream()。map(StreamHandleEntity::getName)。collect(Collectors。joining());System。out。println(names); Java 3。11、排序System。out。println(排序);integerList。stream()。sorted()。forEach(System。out::println);System。out。println(指定排序);指定项正序ListStreamHandleEntitysortRltstreamHandleEntityList。stream()。sorted(Comparator。comparing(StreamHandleEntity::getAge))。collect(Collectors。toList());System。out。println(sortRlt);指定项倒序ListStreamHandleEntitysortReverseRltstreamHandleEntityList。stream()。sorted(Comparator。comparing(StreamHandleEntity::getAge)。reversed())。collect(Collectors。toList());System。out。println(sortReverseRlt);