2011-10-15 57 views
1

我有許多關聯的實體信息與我。java中的雙向收集

我想向用戶顯示「學生」的列表,如果用戶選擇了一個學生,向他的老師展示。

相反,用戶可以選擇查看教師列表,並且他/她可以選擇教師以查看教師正在教授的所有學生。

我期待有一個java集合類(java內置或第三方)來表示這樣的數據,以便我可以根據學生查詢教師,反之亦然。

雙向地圖非常接近,但它強制執行1:1的關係。我有很多關係。

任何線索?

回答

2

我認爲你不能用地圖做到這一點。最簡單的方法是創建一個學生課程和一個教師課程。它們都可以有addTeacher(教師老師)/ addStudent(學生)這樣的方法。所以每個學生對象都知道它教師和每個教師對象都知道它是學生。

2

我不知道如果這是你在找什麼,但你可以看看Guava BiMap

+0

BiMap與BidiMap相同...它提供1:1關聯。 –

+0

我明白了,你有沒有考慮嘗試組合對象......比如'Teacher'包含'List ','Student'包含'List '作爲對象模型。 –

1

這是否不夠?

Map<Student, Set<Teacher>> studentsToTeachers; 
Map<Teacher, Set<Student>> teachersToStudents; 

這不是一個單一的集合,但它可以解決你的問題,只要你的實現是正確的。

+0

確實...這就夠了,這就是我目前所做的。但是..這意味着,現在,我有2個集合,並且......更糟糕......信息在重複中。studentsToTeachers將具有關於教師以及在TeachersToStudents中的信息。 –