Nếu chúng ta có thực thể Sinh viên và Khóa học và mối quan hệ giữa chúng rất nhiều, nghĩa là Học sinh có thể học nhiều khóa và nhiều sinh viên có thể tham gia khóa học. Nếu chúng ta phải đại diện cho mối quan hệ này thì cấu trúc dữ liệu tốt nhất thông qua đó chúng ta có thể đại diện cho mối quan hệ này là gì. Nếu chúng ta sử dụng hashmap với sinh viên làm khóa và danh sách các khóa học mà sinh viên lấy làm giá trị thì chúng ta cần một hashmap khác mà qua đó chúng ta có thể biểu diễn khóa học cho mối quan hệ của sinh viên. Có cách nào tốt nhất để đại diện cho mối quan hệ này để tìm kiếm nhanh không.Cấu trúc dữ liệu để đại diện cho nhiều mối quan hệ
7
A
Trả lời
1
Một đồ thị hai chiều có thể được sử dụng để thực hiện nhiều-nhiều mối quan hệ trong đó mỗi nút có thể được kết nối với nhiều nút khác
0
Tôi nghĩ đó là thích hợp để sử dụng một sự kết hợp của cấu trúc dữ liệu. Dưới đây là một ví dụ nhỏ:
public class ManyToManyMap<S, C> {
private Map<S, Set<C>> firstToSecondMap = new HashMap<>();
private Map<C, Set<S>> secondToFirstMap = new HashMap<>();
public void put(S first, C second) {
if (!firstToSecondMap.containsKey(first)) {
firstToSecondMap.put(first, new HashSet<>());
}
firstToSecondMap.get(first).add(second);
if (!secondToFirstMap.containsKey(second)) {
secondToFirstMap.put(second, new HashSet<>());
}
secondToFirstMap.get(second).add(first);
}
public Set<C> getFirst(S first) {
return firstToSecondMap.get(first);
}
public Set<S> getSecond(C second) {
return secondToFirstMap.get(second);
}
public Set<C> removeByFirst(S first) {
Set<C> itemsToRemove = firstToSecondMap.remove(first);
for (C item : itemsToRemove) {
secondToFirstMap.get(item).remove(first);
}
return itemsToRemove;
}
public Set<S> removeBySecond(C second) {
Set<S> itemsToRemove = secondToFirstMap.remove(second);
for (S item : itemsToRemove) {
firstToSecondMap.get(item).remove(second);
}
return itemsToRemove;
}
}
Và đây là một cách sử dụng ví dụ:
ManyToManyMap<String, String> mmMap = new ManyToManyMap<>();
mmMap.put("Tom", "Math");
mmMap.put("Tom", "Java");
mmMap.put("Tom", "Java");
mmMap.put("Mary", "Java");
Set<String> coursesByStudent = mmMap.getFirst("Tom"); // Java, Math
Set<String> studentByCourse = mmMap.getSecond("Java"); // Tom, Mary
mmMap.removeByFirst("Tom");
studentByCourse = mmMap.getSecond("Java"); // Mary
Các vấn đề liên quan
- 1. NSTokenField đại diện cho dữ liệu cốt lõi cho nhiều mối quan hệ
- 2. Nhiều mối quan hệ với dữ liệu bổ sung về mối quan hệ
- 3. Đặt mối quan hệ với mối quan hệ nhiều-nhiều
- 4. Cần giúp đỡ với nhiều-nhiều mối quan hệ trong dữ liệu cốt lõi cho iPhone
- 5. Cấu trúc thực thể Core: mối quan hệ nhiều-nhiều với cùng một thực thể
- 6. Mối quan hệ dữ liệu lõi iPhone
- 7. Cấu trúc dữ liệu liên tục hiệu quả cho cơ sở dữ liệu quan hệ
- 8. Mối quan hệ giữa nhiều mối quan hệ giữa nhiều mô hình
- 9. Cấu trúc thực thể Core Code-First: Cascade delete trên mối quan hệ nhiều-nhiều
- 10. Nhiều mối quan hệ trong JSON
- 11. Cấu trúc dữ liệu để đại diện cho một mê cung
- 12. Yii nhiều mối quan hệ
- 13. Tạo dữ liệu emberRecord với mối quan hệ có mối quan hệ mà không cần lưu
- 14. Tìm hiểu các mối quan hệ và mối quan hệ dữ liệu của Orchard
- 15. Mối quan hệ nhiều-nhiều trong ndb
- 16. Đăng một mối quan hệ một-nhiều
- 17. Mối quan hệ dữ liệu cốt lõi Lỗi
- 18. Các mẫu GUI để chỉnh sửa dữ liệu với mối quan hệ nhiều-nhiều
- 19. Dữ liệu cốt lõi - NSPredicate để lọc mối quan hệ nhiều-nhiều
- 20. Sử dụng NSPredicate với Dữ liệu cốt lõi cho các mối quan hệ sâu
- 21. Mối quan hệ nhiều-nhiều chung chung
- 22. Tham chiếu tuần hoàn trong mối quan hệ nhiều chiều đến nhiều mối quan hệ
- 23. Dữ liệu cốt lõi cho nhiều mối quan hệ. Họ có tải trọng không?
- 24. Lọc mối quan hệ Nhiều-Nhiều từ trường Mối quan hệ ở Django
- 25. Cập nhật mối quan hệ nhiều-nhiều
- 26. Dữ liệu cốt lõi: Dành cho các mối quan hệ nhiều người
- 27. Nhiều mối quan hệ với nhiều người
- 28. ActiveAndroid Mối quan hệ nhiều-nhiều
- 29. séc JPQL nhiều-nhiều mối quan hệ
- 30. iPhone - dữ liệu lõi Mối quan hệ NSSet
thể trùng lặp của [Java nhiều nhiều bản đồ liên kết] (http://stackoverflow.com/questions/2571652/ java-many-to-many-association-map), [Cấu trúc mô hình theo nhiều mối quan hệ] (http://stackoverflow.com/questions/14219954/model-structure-in-many-to-many-relationship) – rid
http://stackoverflow.com/questions/473862/is-there-a-many-to-many-collection-in-java-using-generics-domain-model-not-per – assylias
Cây là những gì bạn cần ở đây –