Tôi đã được viết mã trong C++ và java toàn bộ cuộc sống của tôi nhưng trên C#, tôi cảm thấy như nó là một con vật hoàn toàn khác nhau.Điều gì sẽ xảy ra khi va chạm băm xảy ra trong khóa Từ điển?
Trong trường hợp va chạm băm trong vùng chứa Từ điển trong C#, nó sẽ làm gì? hoặc thậm chí có phát hiện va chạm không?
Trong trường hợp va chạm trong các vùng chứa tương tự trong SDL, một số sẽ làm cho dữ liệu liên kết phần giá trị khóa thành phần giá trị khóa như danh sách được liên kết hoặc một số sẽ tìm phương pháp băm khác nhau.
[Cập nhật 10:56 A.M. 6/4/2010]
Tôi đang cố gắng tạo bộ đếm cho mỗi người dùng. Và đặt người dùng # không được xác định, nó có thể tăng hoặc giảm. Và tôi hy vọng kích thước của dữ liệu được so với 1000.
Vì vậy, tôi muốn:
- Truy cập nhanh tốt nhất là không O (n), Điều quan trọng là tôi có gần O (1) do theo yêu cầu, tôi cần đảm bảo rằng tôi có thể buộc đăng xuất mọi người trước khi họ có thể thực hiện điều gì đó ngớ ngẩn.
- Tăng trưởng và thu nhỏ động.
- dữ liệu duy nhất.
HashMap là giải pháp của tôi, và có vẻ như từ điển là những gì tương tự như HashMap trong C# ...
Bạn có thể thêm thông tin về lý do bạn cần biết điều này không? 'Dictionary' chỉ được định nghĩa để hoạt động chính xác khi đối mặt với các giá trị băm xung đột. Bất kỳ thông tin nào về cách thực hiện như vậy là chi tiết triển khai và có thể thay đổi giữa các bản phát hành –
JaredPar
Kể từ .NET 3.5, đặt cược tốt nhất của bạn có thể là HashSet (https://msdn.microsoft.com/en-us/library/bb359438(v = vs.110) .aspx). Nếu xảy ra va chạm băm thì đối tượng sẽ đi vào nhóm có sẵn tiếp theo. Xem nguồn tham khảo (http://referencesource.microsoft.com/#System.Core/System/Collections/Generic/HashSet.cs,2d265edc718b158b) để biết chi tiết đầy đủ, chẳng hạn như "Dung lượng luôn luôn là nguyên tố; vì vậy trong quá trình thay đổi kích thước, dung lượng được chọn làm nguyên tố tiếp theo lớn hơn gấp đôi dung lượng cuối cùng. " Rất tiếc, không có hàm khởi tạo nào có dung lượng, nhưng bạn có thể gọi TrimExcess sau khi bạn đã đặt tập hợp. –
yoyo