Trong .NET, có một hàm tạo cho Dictionary<TKey, TValue>
lấy một tham số, int capacity
. Điều này giống với nhiều bộ sưu tập khác như List<T>
, Queue<T>
và Stack<T>
; hơn nữa, theo số the MSDN documentation:Tại sao không có Dictionary.TrimExcess()?
Dung lượng của từ điển là số phần tử có thể được thêm vào từ điển trước khi thay đổi kích thước là cần thiết. Khi các phần tử được thêm vào một từ điển, dung lượng được tự động tăng lên theo yêu cầu bằng cách tái phân bổ mảng nội bộ.
này nghe có vẻ với tôi khá nhiều giống như với các bộ sưu tập khác như List<T>
, vv Kể từ khi những bộ sưu tập đặc trưng tự động thay đổi kích thước hành vi khi cần thiết và do đó khả năng có công suất lớn hơn yêu cầu, hầu hết trong số họ được trang bị TrimExcess
. Điều này rất tiện lợi nếu, giả sử bạn đang thêm một số mục không xác định vào bộ sưu tập cùng một lúc và sau đó bạn sẽ không thêm bất kỳ mục bổ sung nào.
Tại sao Dictionary<TKey, TValue>
không có phương thức này TrimExcess
?
(Tuyên bố từ chối trách nhiệm: Tôi khá quen thuộc với phản hồi "tính năng không tồn tại theo mặc định"; tôi đoán tôi hầu như không biết liệu có lý do cụ thể nào không ?:cho Dictionary
sẽ khó thực hiện hơn nhiều so với các bộ sưu tập đơn giản như List
.)
Từ ' HashSet' có phương thức 'TrimExcess' và cũng làm việc với HashTable bên trong, tôi nghĩ không có lý do kỹ thuật nào để không triển khai' TrimExcess' cho 'Dictionary'. Họ thậm chí còn nói trong tài liệu rằng một 'HashSet' giống như một' Dictionary' không có giá trị. – Kjara