【发布时间】:2021-05-15 12:11:46
【问题描述】:
我很难在 Arrays.asList 中找到两个整数之间的平均值,包括不同的数据类型(字符串和整数)。在这种情况下可以使用流吗?
public class Student {
String name;
String faculty;
private final int groupNumber;
private final int commonSubjectGrade;
private final int specialSubjectGrade;
public Student(String name, String faculty, int groupNumber, int commonSubjectGrade, int specialSubjectGrade){
this.name = name;
this.faculty = faculty;
this.groupNumber = groupNumber;
this.commonSubjectGrade = commonSubjectGrade;
this.specialSubjectGrade = specialSubjectGrade;
}
public String getName() {
return name;
}
public int getCommonSubjectGrade() {
return commonSubjectGrade;
}
public int getSpecialSubjectGrade() {
return specialSubjectGrade;
}
}
我需要找到最后两个整数(commonSubjectGrade 和 specialSubjectGrade)之间的平均值。
import java.util.*;
public class Main {
static List<Student> students = Arrays.asList(
new Student("Podrick Payne", "IntrigueFaculty",1, 7, 8),
new Student("Margaery Tyrell", "IntrigueFaculty", 1, 4, 9),
new Student("Sandor Clegane", "IntrigueFaculty", 1, 8, 8),
new Student("Eddard Stark", "IntrigueFaculty",1, 9, 6),
new Student("Petyr Baelish", "IntrigueFaculty",1, 5, 8)
);
public static void main(String[] args) {
double averageGradeForCommonSubject = students.stream().mapToDouble(Student::getCommonSubjectGrade).average().getAsDouble();
System.out.println("Average grade in common subject for the entire university = " + averageGradeForCommonSubject);
}
第一部分(在所有学生中找到共同学科的平均分)效果很好,但下一部分效果不佳:(
double averageGradeOfTheCertainStudent = students.stream().filter((student) -> student.getName().equals("Petyr Baelish")).
mapToDouble(student -> student.getSpecialSubjectGrade() & student.getCommonSubjectGrade()).average().getAsDouble();
System.out.println("Average grade of Petyr Baelish = " + averageGradeOfTheCertainStudent);
计算 Petyr Baelish 的最后 2 个整数(8 到 5 之间)的平均值的方法是什么? 我会很感激任何帮助。如果我的问题很愚蠢,请不要笑我。我学习 Java 才 3 周 :)
【问题讨论】:
标签: java arraylist java-stream