Đối với bài đăng đầu tiên của tôi ở đây, tôi có một câu hỏi liên quan đến so sánh IEnumerable. Tôi có cấu trúc có thể ràng buộc dựa trên logic đếm. Nội dung của các thay đổi IEnumerable theo thời gian và tôi phải tự bắn các sự kiện CollectionChanged.So sánh hai IEnumerable để phát hiện các thay đổi
Tôi có một thuật toán rất ngây thơ cho phép tôi phát hiện các thay đổi đơn giản giữa hai trạng thái của IEnumerable (đơn giản thêm, loại bỏ đơn giản, nhiều bổ sung, nhiều loại bỏ) nhưng nó không phải là rất hiệu quả và không phát hiện tất cả mọi thứ.
Một ví dụ nhanh về những gì tôi cần:
Nhà nước 1 của IEnumerable: A * B * C * D * E
Nhà nước 2 của IEnumerable: A * C * B * D * D1
Đối với ví dụ này, tôi sẽ phải phát hiện
- Một hoạt động di chuyển: B thay đổi chỉ số 1-2
- Một Add hoạt động: D1 được chèn vào index 4
- Một hoạt động remove: E đã được gỡ bỏ
Có một thuật toán để giải quyết vấn đề này một cách hiệu quả càng tốt (O (nLog (n)) sẽ là một khởi đầu tốt)?
Cảm ơn!
B có chuyển từ chỉ mục 1 -> 2 hoặc có C được chuyển từ 2 -> 1 không? hoặc cả hai? –
Nếu trạng thái 1 là 'A B' và trạng thái 2 là' B A A', có hai mục được thêm vào, hoặc thêm một mục và một mục được di chuyển? Nếu 'A' di chuyển, nó di chuyển đến đâu? – Jon
@JamesB: B chuyển từ chỉ mục 1 -> 2 thông tin là đủ! – Sisyphe