Мой опыт использования вложенного класса nested и Stream в Java для подсчета среднего возраста и определения студентов, которым грозит получение повестки в этом году, был очень полезным и позволил мне упростить и оптимизировать код․ В этой статье я расскажу о том, как я использовал эти возможности в своем проекте․
Для начала, я создал класс Student с полями имя (String), возраст (int) и пол (String)․ Затем, я создал вложенный класс Nested, который представляет собой список студентов и имеет методы для добавления студентов и получения списка студентов мужского пола․public class Student {
private String name;
private int age;
private String gender;
public Student(String name, int age, String gender) {
this․name name;
this․age age;
this․gender gender;
}
public String getName {
return name;
}
public int getAge {
return age;
}
public String getGender {
return gender;
}
}
public class Nested {
private List
public Nested {
students new ArrayList<>;
}
public void addStudent(Student student) {
students․add(student);
}
public List
return students․stream
․filter(student -> student․getGender․equals(″мужской″))
․collect(Collectors․toList);
}
}
Далее, я создал метод в классе Nested, который считает средний возраст студентов мужского пола․ Для этого я использовал Stream API․public double getAverageAge {
return getMaleStudents․stream
․mapToInt(Student⁚⁚getAge)
․average
․orElse(0);
}
Этот метод использует метод getMaleStudents для получения списка студентов мужского пола, затем с помощью метода mapToInt я преобразую каждый объект Student в его возраст, после чего использую метод average для получения среднего значения․ Если список пустой, то используется метод orElse, чтобы вернуть 0․
Наконец, чтобы определить студентов, которым грозит получение повестки в данном году, я создал метод в классе Nested, который использует метод filter и метод anyMatch․public boolean isDrafted(Student student) {
int currentYear Calendar․getInstance․get(Calendar․YEAR);
int minDraftAge currentYear ౼ 27;
int maxDraftAge currentYear ౼ 18;
return currentYear — student․getAge > minDraftAge nn
currentYear — student․getAge < maxDraftAge;
}
Этот метод использует текущий год для определения диапазона возрастов, при которых студент может получить повестку․ Затем, используя методы filter и anyMatch, я проверяю, есть ли студенты в списке, которые соответствуют этим условиям․
Надеюсь, что мой опыт использования вложенного класса nested и Stream в Java для решения данной задачи окажется полезным․ Эти возможности позволяют упростить и оптимизировать код, делая его более читаемым и эффективным․ Если у вас возникнут вопросы, не стесняйтесь задавать их․ Удачи в ваших разработках!