一、介绍Java8 Stream
Java8 Stream流是一种处理数据集合的方式,它可以对集合进行一系列的操作,包括过滤、映射、排序等,从而实现对集合中元素的处理和转换。Stream流是一种惰性求值的方式,只有在需要返回结果时才会执行实际操作,这种方式可以提高程序的性能。
1.1 主要特点
-
延迟执行:Stream流中的操作并不会立即执行,只有在遇到终止操作时才会触发执行。
-
多次使用:同一个Stream流可以进行多个操作,并且每个操作都是独立的,不会影响其他操作。
-
链式调用:Stream流中的操作可以进行链式调用,使代码更加简洁易懂。
-
并行执行:Stream流可以进行并行操作,提高程序的性能。
1.2 主要操作
-
filter:对集合中的元素进行过滤,返回符合条件的元素。
-
map:对集合中的元素进行映射,返回映射后的元素集合。
-
distinct:去重操作,返回不重复的元素集合。
-
sorted:排序操作,返回按照指定规则排序后的集合。
-
limit:限制集合元素的数量,只返回指定数量的元素。
-
forEach:遍历集合中的元素。
-
reduce:对集合中的元素进行归纳操作,返回一个值。
-
collect:将集合中的元素转换为另一个集合类型,比如List、Set、Map等。文章来源:https://www.toymoban.com/news/detail-666131.html
上面介绍了Java8 Stream流的特点和操作,下面我们来实操一下文章来源地址https://www.toymoban.com/news/detail-666131.html
二、常见操作
2.1 创建新数组
List<Fruit> newList = fruits.stream()
.map(f -> new Fruit(f.getId(), f.getName() + "s", f.getCountry()))
.collect(Collectors.toList())
2.2 筛选数组
Map<Boolean, List<TransferData>> preAvg = list.stream()
.collect(Collectors.groupingBy(x -> x.getStatus() != 3));
List<TransferData> trueList = preAvg.get(true);
2.3 筛选数组2
List<TypeAttribute> result = list.stream().filter((e) ->
e.getIsDeleted() != 1
).collect(Collectors.toList());
2.4 筛选不为空
list.stream().filter(e -> StringUtils.isNotBlank(e.getUrl())).collect(Collectors.toList())
2.5 数组移除指定元素
dictList.removeIf(e->e.getDictKey().equals("10") );
2.6 List数组求和
long zsSum = zs.stream().reduce(Integer::sum).orElse(0);
2.7 初始化list
List<Integer> list = Stream.of(1, 2, 3).collect(Collectors.toList());
2.8 针对某个属性对倒序
List<TransferData> sList = trueList.stream().sorted(Comparator.comparing(TransferData::getCreateTime).reversed()).collect(Collectors.toList());
List<TransferData> falseList = preAvg.get(false);
2.9 获取数组对象的所有id
List<Long> delIds = delList.stream().map(TypeAttribute::getId).collect(Collectors.toList());
到了这里,关于Java8 Stream流常见操作--持续更新中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!