首页 > 技术文章 > java lambda求和最值

suizhikuo 2021-07-09 19:56 原文


Integer totalSeller = facilitatorVos.stream().map(FacilitatorVo::getSellerNum).reduce(0, Integer::sum);


BigDecimal totalTransaction = facilitatorVos.stream().map(FacilitatorVo::getTransactionAmount).reduce(new BigDecimal("0"), BigDecimal::add);


BigDecimal alipayTatal = listForTotal.stream().filter(v -> "支付宝".equals(v.getPayment())).map(ReportOrderInfoVO::getPayed).reduce(new BigDecimal("0"), BigDecimal::add);

int age = list.stream().reduce(0, (person1,person2)->person1.getAge()+person2.getAge());
更多

cartVo.setCartProductVoList(cartProductVos);
// 是否全选
cartVo.setSelectAll(cartProductVos.stream().allMatch(CartProductVo::getProductSelected));
// 总数量
int sum = cartProductVos.stream().mapToInt(CartProductVo::getQuantity).sum();
cartVo.setCartTotalQuantity(sum);
// 总价格
BigDecimal price = cartProductVos.stream().map(CartProductVo::getProductTotalPrice).reduce(new BigDecimal("0"), BigDecimal::add);
cartVo.setCartTotalPrice(price);
求和

//总数量
Long count = books.stream().collect(Collectors.counting());
System.out.println(count);
//平均值
Double avg = books.stream().collect(Collectors.averagingDouble(Book::getPrice));
System.out.println(avg);
//总和
Double sum = books.stream().collect(Collectors.summingDouble(Book::getPrice));
System.out.println(sum);
//最大值
Optional<Book> max = books.stream().collect(Collectors.maxBy(Comparator.comparing(Book::getPrice)));
System.out.println(max.get());
//最小值
Optional<Double> min = books.stream().map(Book::getPrice).collect(Collectors.minBy(Double::compare));
//分组
Map<Double, List<Book>> map = books.stream().collect(Collectors.groupingBy(Book::getPrice));
//分区
Map<Boolean, List<Book>> collect = books.stream().collect(Collectors.partitioningBy(b -> b.getPrice() > 2500));
//
DoubleSummaryStatistics summaryStatistics = books.stream().collect(Collectors.summarizingDouble(Book::getPrice));
System.out.println(summaryStatistics.getAverage()+summaryStatistics.getCount()+summaryStatistics.getMax());
//连接
String name = books.stream().map(Book::getName).collect(Collectors.joining());
name = books.stream().map(Book::getName).collect(Collectors.joining(",","[","]"));
System.out.println(name);
最值

// 无限流--迭代
// iterate方法接受一个初始值(在这里是0),还有一个依次应用在每个产生的新值上的Lambda(UnaryOperator<t>类型)
// 斐波纳契数列是著名的经典编程练习。下面这个数列就是斐波纳契数列的一部分:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55…数列中开始的两个数字是0和1,后续的每个数字都是前两个数字之和。
// 斐波纳契元组序列与此类似,是数列中数字和其后续数字组成的元组构成的序列:(0, 1), (1, 1), (1, 2), (2, 3), (3, 5), (5, 8), (8, 13), (13, 21) …
// 你的任务是用iterate方法生成斐波纳契元组序列中的前20个元素
Integer integer = Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]}).limit(20).map(e -> e[0]).max(Comparator.naturalOrder()).get();
// 流只能操作一次
Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]}).limit(20).map(e -> e[0]).forEach(System.out::println);
// 求和
int sum = Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]}).limit(20).mapToInt(e -> e[0]).sum();


————————————————
版权声明:本文为CSDN博主「努力奋斗GO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39940205/article/details/86308024

推荐阅读