java8 list统计(求和、最大、最小、平均)
list.stream().mapToDouble(User::getHeight).sum()//和
list.stream().mapToDouble(User::getHeight).max()//最大
list.stream().mapToDouble(User::getHeight).min()//最小
list.stream().mapToDouble(User::getHeight).average()//平均值
当然,除了统计double类型,还有int和long
bigdecimal需要用到reduce求和
Double示例:
public class HelloWorld {
private static final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点
public static void main(String[] args) {
Random random = new Random();
List<User> list = new ArrayList<>();
for(int i=1;i<=5;i++) {
double weight = random.nextDouble() * 100 + 100;//随机身高:100-200
User u = new User(i, "用户-" + i, weight);
list.add(u);
}
System.out.println("用户:" + list);
double sum = list.stream().mapToDouble(User::getHeight).sum();
System.out.println("身高 总和:" + df.format(sum));
double max = list.stream().mapToDouble(User::getHeight).max().getAsDouble();
System.out.println("身高 最大:" + df.format(max));
double min = list.stream().mapToDouble(User::getHeight).min().getAsDouble();
System.out.println("身高 最小:" + df.format(min));
double average = list.stream().mapToDouble(User::getHeight).average().getAsDouble();
System.out.println("身高 平均:" + df.format(average)); }
private static class User{
Integer id;
String name;
double height;//身高 public User(Integer id, String name, double height) {
this.id = id;
this.name = name;
this.height = height;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public double getHeight() {
return height;
} public void setHeight(double height) {
this.height = height;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", height=" + height +
'}';
}
} }
执行结果:
用户:
[User{id=1, name='用户-1', height=192.15677342306662},
User{id=2, name='用户-2', height=196.35056058694772},
User{id=3, name='用户-3', height=101.96271958293853},
User{id=4, name='用户-4', height=110.83134063008366},
User{id=5, name='用户-5', height=106.27720636757154}]
身高 总和:707.58
身高 最大:196.35
身高 最小:101.96
身高 平均:141.52
BigDecimal示例:
public class HelloWorld {
private static final DecimalFormat df = new DecimalFormat("0.00");//保留两位小数点
public static void main(String[] args) {
Random random = new Random();
List<User> list = new ArrayList<>();
for(int i=1;i<=5;i++) {
double weight = random.nextDouble() * 100 + 100;//随机身高:100-200
list.add(new User(i, new BigDecimal(weight).setScale(BigDecimal.ROUND_HALF_UP, 2)));
}
System.out.println("list:" + list);
BigDecimal add = list.stream().map(User::getHeight).reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println("身高 总和:" + df.format(add));
Optional<User> max = list.stream().max((u1, u2) -> u1.getHeight().compareTo(u2.getHeight()));
System.out.println("身高 最大:" + df.format(max.get().getHeight()));
Optional<User> min = list.stream().min((u1, u2) -> u1.getHeight().compareTo(u2.getHeight()));
System.out.println("身高 最小:" + df.format(min.get().getHeight())); }
private static class User{
Integer id;
BigDecimal height;//身高 public User(Integer id, BigDecimal height) {
this.id = id;
this.height = height;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public BigDecimal getHeight() {
return height;
} public void setHeight(BigDecimal height) {
this.height = height;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", height=" + height +
'}';
}
} }
执行结果:
list:
[User{id=1, height=141.5472},
User{id=2, height=133.1609},
User{id=3, height=101.5403},
User{id=4, height=157.8470},
User{id=5, height=177.7596}]
身高 总和:711.8550
身高 最大:177.76
身高 最小:101.54
java8 list统计(求和、最大、最小、平均)的更多相关文章
- 使用streaming window函数统计用户不同时间段平均消费金额等指标
场景 现在餐厅老板已经不满足仅仅统计历史用户消费金额总数了,他想知道每个用户半年,每个月,每天,或者一小时消费的总额,来店消费的次数以及平均金额. 给出的例子计算的是每5秒,每30秒,每1分钟的用户消 ...
- Linux显示内存统计最大和最小的详情
Linux显示内存统计最大和最小的详情 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -l total used free shared buffe ...
- The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
文件链接 Karp在1977年的论文,讲述了一种\(O(nm)\)的算法,用来求有向强连通图中最小平均权值回路(具体问题请参照这里) 本人翻译(有删改): 首先任取一个节点 \(s\) ,定义 \(F ...
- awk对列/行进行统计求和【转】
场景]--类似于excel中的sum函数对列/行进行统计求和 A01 A02 A03 A09 [要求1]--对列进行统计求和 A01 A02 A03 A09 TOTAL [要求2]--对行进行统计求和 ...
- awk统计命令(求和、求平均、求最大值、求最小值)
本节内容:awk统计命令 1.求和 cat data|awk '{sum+=$1} END {print "Sum = ", sum}' 2.求平均 cat data|awk '{ ...
- devexpress表格gridcontrol实现列统计,总计,平均,求和等。
1.在许多项目中,经常要实现对某些列的统计.devexpress控件gridcontrol实现这些功能只需要设置某些属性,就可以达到要求了.以下例举了一个统计班级总数,人数总计,分数总计的案例.效果图 ...
- 水晶报表分组,统计,求和,sum()函数使用
--Sum()函数统计的是明细所有的和 Sum(字段名) --根据分组字段统计的和 Sum ({xh_Getdinggoudan;1.Djine} ,{xh_Getdinggoudan;1.Ddgda ...
- 373. Find K Pairs with Smallest Sums 找出求和和最小的k组数
[抄题]: You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. D ...
- python spark 求解最大 最小 平均
rdd = sc.parallelizeDoubles(testData); Now we’ll calculate the mean of our dataset. 1 LOGGER.info( ...
随机推荐
- perf + Flame Graph火焰图分析程序性能
1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...
- 分布式 cephfs
参考链接: http://docs.ceph.com/docs/mimic/cephfs/
- iOS开发基础-UIScrollView基础
普通的 UIView 不具备滚动功能,不能显示过多的内容.UIScrollView 是一个能够滚动的视图控件,可用来展示大量的内容. UIScrollView 的简单使用: 1)将需要展示的内容添 ...
- Xshell 连接Linux服务器自动中断问题
Xshell连接上Linux服务器后经常自动中断连接,报错如下图: 解决方法如下,进入/etc/ssh目录打开sshd_config文件,找到下图两个参数并设置下图所示的值: 重启sshd即可解决,如 ...
- rs485引脚定义
转自:http://blog.chinaunix.net/uid-9688646-id-3275796.html rs485有两种,一种是半双工模式,只有DATA+和DATA-两线,另一种是全双工模式 ...
- 远程连接腾讯云服务器MySQL数据库
1.添加腾讯云安全组规则的MySQL 3306端口 将所有端口打开,至少打开3306,不在赘述. 2.打开更改MySQL配置文件 打开配置文件 vi /etc/mysql/mysql.conf.d/m ...
- lr 函数--lr_save_string
lr_eval_string 返回脚本中一个参数当前的值 Returns the string argument after evaluating embedded parameters.一般都用 ...
- dubbo框架提供Main方法运行容器的几种方式(转)
本文使用的是dubbo提供的主类com.alibaba.dubbo.container.Main启动容器. 主要区别是提供不同插件的的启动方式. 目录 一.项目内容 1.1.目录结构图 1.2 ...
- .class和.getClass()的区别
使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如: getClass() 返回此 Object 的运行时类. //需要有com.lpx.test.class这个类 Logger ...
- Eclipse 设置背景色
window -> preferences -> General -> Editors -> Test Editors -> Background color 勾掉Sy ...