java中double身高_java8的stream应用之-求3个班级的男生的平均身高中-最高的那个身高...

1. 问题

川哥在群里出的题:一共三个班级,每个班级的人数(男生,女生)不等,要求求出这三个班级的男生的平均身高中,最高的那个身高

2. 代码package com.niewj.stream;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.util.ArrayList;

import java.util.List;

import java.util.Optional;

import java.util.stream.Collectors;

/**

* 求3个班级(人数/男生/女生不等)的男生的平均身高中,最高的那个身高

*

* Created by niewj on 2020/9/24 11:40 */public class StreamTest {

public static void main(String[] args) {

// 初始化3个年级

Grade grade1 = new Grade("1年级");

Grade grade2 = new Grade("2年级");

Grade grade3 = new Grade("3年级");

// 初始化数据 24个学生

List studentList = initStudents(grade1, grade2, grade3);

// 答题

Optional max = studentList.stream()

.filter(s -> "男".equals(s.getGender()))

.collect(Collectors.groupingBy(Student::getGrade, Collectors.averagingDouble(Student::getHeight)))

.values()

.stream()

.max(Double::compareTo);

System.out.println(max.orElse(0.0));

}

private static List initStudents(Grade grade1, Grade grade2, Grade grade3) {

List studentList = new ArrayList<>();

studentList.add(new Student(grade1, "女", "张00", 160));

studentList.add(new Student(grade2, "男", "张01", 179));

studentList.add(new Student(grade3, "男", "张02", 172));

studentList.add(new Student(grade1, "女", "张03", 162));

studentList.add(new Student(grade2, "男", "张04", 170));

studentList.add(new Student(grade3, "男", "张05", 162));

studentList.add(new Student(grade2, "男", "张06", 175));

studentList.add(new Student(grade1, "女", "张07", 162));

studentList.add(new Student(grade2, "男", "张08", 172));

studentList.add(new Student(grade3, "男", "张09", 176));

studentList.add(new Student(grade2, "女", "张10", 159));

studentList.add(new Student(grade1, "男", "张11", 172));

studentList.add(new Student(grade2, "男", "张12", 177));

studentList.add(new Student(grade3, "女", "张13", 170));

studentList.add(new Student(grade2, "男", "张14", 172));

studentList.add(new Student(grade1, "女", "张15", 166));

studentList.add(new Student(grade2, "女", "张16", 166));

studentList.add(new Student(grade3, "男", "张17", 190));

studentList.add(new Student(grade2, "女", "张18", 172));

studentList.add(new Student(grade1, "女", "张19", 160));

studentList.add(new Student(grade2, "女", "张20", 155));

studentList.add(new Student(grade2, "男", "张21", 172));

studentList.add(new Student(grade2, "男", "张22", 169));

studentList.add(new Student(grade1, "女", "张23", 170));

return studentList;

}

@Data

@AllArgsConstructor @NoArgsConstructor static class Student {

private Grade grade;

private String gender;

private String sname;

private int height;

}

@Data

@AllArgsConstructor static class Grade {

private String className;

}

}

3. 小结:Optional max = studentList.stream()

.filter(s -> "男".equals(s.getGender()))

.collect(Collectors.groupingBy(Student::getGrade, Collectors.averagingDouble(Student::getHeight)))

.values()

.stream()

.max(Double::compareTo);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值