Giao diện Cài đặt thực tế không được Bản đồ hoặc bất kỳ thứ gì hỗ trợ. Tuy nhiên, HashSet được thực hiện bằng cách sử dụng Hashmap như cấu trúc dữ liệu thực tế.
Set không được cho là có Bản đồ trong javadoc
Một bộ sưu tập mà không chứa các yếu tố trùng lặp. Chính thức hơn, các bộ không chứa cặp phần tử e1 và e2 sao cho e1.equals (e2) và nhiều nhất là một phần tử null. Như ngụ ý bởi tên của nó, giao diện này mô hình hóa trừu tượng thiết lập toán học.
Tuy nhiên, theo javadoc Hashset đang sử dụng HashMap liên tục để đảm bảo duy trì dữ liệu duy nhất.
Lớp này triển khai giao diện Set, được hỗ trợ bởi bảng băm (thực tế là bản sao HashMap). Nó không đảm bảo về thứ tự lặp của tập hợp; đặc biệt, nó không đảm bảo rằng thứ tự sẽ vẫn không đổi theo thời gian. Lớp này cho phép phần tử null.
Nó giữ giá trị được thêm vào Đặt bên trong Bản đồ dưới dạng khóa, không có giá trị. Nó thêm cùng một đối tượng đơn liên tục vào các giá trị cho tất cả các mục.
public boolean More ...add(E e) {
return map.put(e, PRESENT)==null;
}
Ở đây, PRESENT là đối tượng giả giá trị tĩnh được lưu giữ trong bản đồ chính.
private static final Object PRESENT = new Object();
Backing Bản đồ đối tượng được tạo ra khi chúng tôi gọi construtors hình HashSet: -
public More ...HashSet() {
map = new HashMap<E,Object>();
}
public Nhiều hơn ... HashSet (Collection c) { map = new HashMap (Math.max ((int) (c.size() /. 75f) + 1, 16)); addAll (c); }
công khai Thêm ... HashSet (int initialCapacity, float loadFactor) { map = new HashMap (initialCapacity, loadFactor); }
Tất cả các nguồn có thể được nhìn thấy ở đây link
Tham khảo javadocs cho việc triển khai Set khác được hỗ trợ bởi Map.
Nhìn vào mã nguồn chắc chắn sẽ giúp bạn. 'Set' thực sự được hỗ trợ bởi một số' Bản đồ ' – TheLostMind
Ngoài ra, lưu ý rằng bạn không nên xem xét cách' HashSet' hoặc 'TreeSet' được triển khai và tự hỏi tại sao một lớp * được Bản đồ hỗ trợ nên được coi là Bộ sưu tập *. Việc triển khai có thể thay đổi, chức năng * của nó * cần được xem xét ở đây. – TheLostMind
Bạn đã tìm thấy hình ảnh này ở đâu? Tôi có thể sử dụng không? Tôi đang làm một hướng dẫn về khung bộ sưu tập, và tôi thích ví dụ này. –