Java 8 Stream API实例
2021-04-14 15:29
标签:UNC 新建 大于 out use 处理 返回 sorted 信息 首先将你的集合处理成流,才可以使用此API。 接下来创建一个String类型的List,便于测试。 接下来展示具体参数使用方式。 例:需要过滤出在集合中,大于5的数字的集合。 filter内部使用的是lamda表达式,也是Java8的功能,o代表集合中每一个元素,o>5表示这个元素的值若大于5就返回true,就获取结果。collect表示聚合,Collectors.toList()表示将结果聚合到一个List集合。 例:需要将集合内的元素全部转换成String类型。 例: 需要从小到大排序。 例: 需要从大到小排序。 例: 打印集合内每个元素。 例: 计算集合中元素的和。 reduce中第一个参数为基数,即为初始值,i,j的定义为第一个和第二个操作数,i+j即为操作,此处为加法操作。 如果计算乘法,就不能设置初始值为0,因为0乘任何数都为0。 例: 将list聚合成一个key为元素,value为“item”+元素的Map。 结果:{1=item1, 2=item2, 3=item3, 4=item4, 6=item6, 7=item7} keyMapper表示设置为key的规则,valueMapper表示设置为value的规则。 Function.identity()表示当前本身元素。 Collectors.groupingBy(Function super T, ? extends K> classifier) 新建一个User实体,有姓名和年龄两个字段,并初始化一个集合便于测试。 例: 需要把名字相同的实体提出来放在一起,形成一个List集合。 结果:{han=[User [name=han, age=20], User [name=han, age=21]], CSDN=[User [name=CSDN, age=19]], 与李=[User [name=与李, age=18]]} 此处使用User实体的name属性进行分组。 User::getName 与 o -> o.getName() 含义相同,两者皆可传入。 Collectors.partitioningBy(Predicate super T> predicate) 例: 分别统计年龄大于等于20和小于20的学生信息 结果:{false=[User [name=与李, age=18], User [name=CSDN, age=19]], true=[User [name=han, age=20], User [name=han, age=21]]} 可以看到返回结果是一个Map 此文列举了Stream部分方法的使用,具体更多的方法需要自己去深入了解。通过熟悉使用Stream的api之后,你会对它的处理方式爱不释手。 Java 8 Stream API实例 标签:UNC 新建 大于 out use 处理 返回 sorted 信息 原文地址:https://www.cnblogs.com/yl-space/p/13336282.html一、开篇
二、实例
Stream
List
List
List
List
List
list.stream().forEach(o->System.out.println(o));
list.forEach(o->System.out.println(o));
List
Integer sum = list.stream().reduce(0, (i, j) -> i + j);
Map
List
Map
Map
三、结尾