点击上方关注订阅黑码教主获取更多精彩内容
Java8统计list中指定属性的最大、最小、平均值、求和
使用方式:
list.stream().mapToDouble(Student1::getScore).sum()//和 list.stream().mapToDouble(Student1::getScore).max()//最大 list.stream().mapToDouble(Student1::getScore).min()//最小 list.stream().mapToDouble(Student1::getScore).average()//平均值
Student1类
class Student1 { Integer id; String name; Double score; public Student1(Integer id, String name, Double score) { this.id = id; this.name = name; this.score = score; } 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 getScore() { return score; } public void setScore(Double score) { this.score = score; } @Override public String toString() { return "Student1{" + "id=" + id + ", name='" + name + '\'' + ", score=" + score + '}'; } }
测试
private static final DecimalFormat df = new DecimalFormat("0.00"); @Test public void demo() { Random random = new Random(); List<Student1> list = new ArrayList<>(); for(int i=1;i<=5;i++) { double score = Math.round(random.nextDouble() * 100); Student1 stu = new Student1(i, "学生-" + i, score); list.add(stu); } System.out.println("学生:" + list.toString()); Double sum = list.stream().mapToDouble(Student1::getScore).sum(); Double max = list.stream().mapToDouble(Student1::getScore).max().getAsDouble(); Double min = list.stream().mapToDouble(Student1::getScore).min().getAsDouble(); Double average = list.stream().mapToDouble(Student1::getScore).average().getAsDouble(); System.out.println("总和" + sum); System.out.println("最大值" + df.format(max)); System.out.println("最小值" + df.format(min)); System.out.println("平均值" + df.format(average)); }
结果:
学生:[Student1{id=1, name='学生-1', score=80.0}, Student1{id=2, name='学生-2', score=59.0}, Student1{id=3, name='学生-3', score=27.0}, Student1{id=4, name='学生-4', score=99.0}, Student1{id=5, name='学生-5', score=80.0}] 总和345.0 最大值99.00 最小值27.00 平均值69.00
如果你觉得本篇还不错,请点赞关注!
文章由黑码教主创作,仅代表个人观点,配图源于网络版权归原作者所有,如有侵权联系删除!