JAVA stream流一些常见的用法

**Stream作为java8的新特性,基于lambda表达式,是对集合对象功能的增强,它专注于对集合对象进行各种高效、便利的聚合操作或者大批量的数据操作,提高了编程效率和代码可读性。

Stream的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。**

1.排序
// 升序
list.stream().sorted(Comparator.comparing(T::getPrice)).collect(Collectors.toList());
//降序
list.stream().sorted(Comparator.comparing(T::getPrice).reversed()).collect(Collectors.toList());
//多重list
Collection<List> cList = list.stream().collect(Collectors.groupingBy(s -> s.getPrice(), Collectors.toList())).values();
List<List> cartItems = new ArrayList<>(cList);
cartItems.stream().sorted((x,y) -> { return x.get(0).getPrice().compareTo(y.get(0).getPrice());}).collect(Collectors.toList())

2.分组
Map<String,List> map= list.stream().collect(Collectors.groupingBy(T::getType));

3.过滤
list.stream().filter(s->s.getGender() && s.getHeight() >= 1.8).collect(Collectors.toList());

4.求和
// int、double、long:
Double sum = list.stream().mapToDouble(T::getAmt).sum();
//BigDecimal:
BigDecimal sum =list.stream().map(T::getAmt).reduce(BigDecimal.ZERO,BigDecimal::add);

5.取某个字段最大值
T t = list.stream().max(Comparator.comparing(T::getNumber)).get();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值