#java #collections
#java #Коллекции
Вопрос:
У меня есть информация о многих связанных объектах со мной.
Я хотел бы показать пользователю список «учеников», и если пользователь выберет ученика, покажите его учителям.
И наоборот, пользователь может выбрать просмотр списка учителей, и он / она может выбрать учителя, чтобы увидеть всех учеников, которых преподает этот учитель.
Я ищу класс Java collection (встроенный в java или сторонний) для представления таких данных, чтобы я мог запрашивать учителей на основе student или наоборот.
Карта Bidi подходит довольно близко, но она обеспечивает соотношение 1: 1. У меня есть отношения «многие ко многим».
Какие-нибудь подсказки?
Ответ №1:
я думаю, вы не смогли бы сделать это с помощью map. самым простым способом было бы создать класс Student и класс Teacher. оба они могут иметь такой метод, как addTeacher (Учитель-учитель) / addStudent(студент-студент). Таким образом, каждый объект Student знает, что это учителя, и каждый объект Teacher знает, что это студент.
Ответ №2:
Я не уверен, что это то, что вы ищете, но вы можете взглянуть на Guava BiMap
Комментарии:
1. BiMap — это то же самое, что и BidiMap… Он обеспечивает ассоциацию 1: 1.
2. Я вижу, вы рассматривали возможность создания композиции объектов.. например,
Teacher
содержитList<Student>
иStudent
содержитList<Teacher>
в качестве объектной модели.
Ответ №3:
Разве этого недостаточно?
Map<Student, Set<Teacher>> studentsToTeachers;
Map<Teacher, Set<Student>> teachersToStudents;
Это не единая коллекция, но это решило бы вашу проблему, при условии, что ваша реализация была правильной.
Комментарии:
1. Верно… Этого было бы достаточно, и это то, что я сделал в настоящее время. Но .. Это означает, что теперь у меня есть 2 коллекции и … что еще хуже .. информация повторяется.. Учащиеся и учителя будут иметь информацию об учителях так же, как и в teachersToStudents.