Как сделать поиск нескольких студентов по частичному соответствию имени, возвращающая массив найденных студентов или пустой массив

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));

    }
    
}
→ Ссылка