Từ JavaDocs của HashSet:Chi phí lặp trên HashSet cũng phụ thuộc vào khả năng sao lưu bản đồ là gì?
Lớp này cung cấp hiệu suất hằng số thời gian cho các hoạt động cơ bản (thêm, xóa, chứa và kích thước), giả định các hàm băm phân tán các yếu tố đúng trong xô. Lặp lại tập hợp này đòi hỏi thời gian tỉ lệ với tổng kích cỡ của cá thể HashSet (số lượng phần tử) cộng với "dung lượng" của sự sao lưu HashMap thể hiện (số lượng nhóm). Vì vậy, nó rất quan trọng không đặt công suất ban đầu quá cao (hoặc hệ số tải quá thấp) nếu lặp hiệu suất là quan trọng
Tại sao lặp cần có thời gian tỉ lệ với sum (số phần tử trong bộ + công suất của bản đồ sao lưu) và không chỉ cho số lượng các phần tử trong tập hợp chính nó?
.
Làm cách nào bạn lặp qua tất cả các thành phần mà không cần lặp qua tất cả các nhóm trống? – sepp2k
Liên quan: http://stackoverflow.com/a/11903357/829571 – assylias
Bạn cũng có thể [kiểm tra mã] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/ 7-b147/java/util/HashSet.java? Av = f # 168) và tìm hiểu xem điều gì xảy ra dưới mui xe. – assylias