Как сделать поиск нескольких студентов по частичному соответствию имени, возвращающая массив найденных студентов или пустой массив
private void run() {
Student[] students = new Student[3];
Student student = new Student();
student.name = "Max";
student = new Student();
student.name = "Kiril";
student = new Student();
student.name = "Kiril";
}
private Student findStudent(Student[] students, String text) {
for (Student student : students) {
if (student.name.contains(text)) {
return student;
}
}
}
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Например, так:
import java.util.Arrays;
import java.util.Comparator;
public class Student {
private final String name;
private final Integer age;
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public Student(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" + "name=" + name + ", age=" + age + '}';
}
public static Student[] findStudent(Student[] students, String text) {
return Arrays.stream(students)
.filter(student -> student.getName().contains(text))
.sorted(Comparator.comparingInt(Student::getAge))
.toArray(Student[]::new);
}
public static void main(String[] args) {
Student[] students = {
new Student("Max", 20),
new Student("Kiril", 19),
new Student("Kiril", 17),
new Student("Artem", 18)
};
Student[] result = Student.findStudent(students, "iri");
System.out.println(Arrays.toString(result));
}
}