Я рекомендую изучить структуру данных HashMap . Он позволяет хранить элементы в коллекциях, сопоставленных с определенным ключом, чтобы впоследствии их можно было извлечь по тому же ключу. В вашем примере вы можете иметь разные хеш-карты для поиска по разным полям. Ключом хеш-карты будет поле (т. Е. ID, фамилия или GPA), а значением будет соответствующий студент. Для поиска без учета регистра убедитесь, что ключ (фамилия) преобразован в нижний регистр перед сохранением объекта и перед извлечением объекта.
для хранения идентификаторов:
Map<String, Student> idToStudent;
ключ: "23213233", значение: "Some Student";
, чтобы учесть дубликаты имен или gpa, затем используйте карту типа:
Map<String, List<Student>> lastNameToStudents;
ключ: «кузнец», значение: [«Джон Смит», «Боб Смит» и т. Д.]
Map<Double, List<Student>> gpaToStudents:
клавиша: «2.4», значение: [«Студент 1», «Студент 2» и т. Д.];
Обратите внимание, я для краткости использую строковое представление имени студента, но на самом деле они представляют Student
экземпляров.