Sự khác biệt chính - TreeSet vs HashSet
Hầu hết các ngôn ngữ lập trình đều hỗ trợ Mảng. Nó là một cấu trúc dữ liệu được sử dụng để lưu trữ nhiều phần tử của cùng một kiểu dữ liệu. Nếu có mảng được khai báo cho sáu phần tử, thì nó không thể được sử dụng để lưu trữ mười phần tử. Do đó, mảng không động và không thể thay đổi kích thước của mảng khi nó được khai báo. Các ngôn ngữ lập trình như Java hỗ trợ Bộ sưu tập được sử dụng để lưu trữ dữ liệu động. Bộ sưu tập hỗ trợ các hoạt động như thêm phần tử và xóa phần tử. Có một số giao diện và lớp trong hệ thống phân cấp bộ sưu tập. Giao diện cơ sở là giao diện Bộ sưu tập. Set là một giao diện mở rộng giao diện Bộ sưu tập. Nó không cho phép sao chép. TreeSet và HashSet là hai lớp trong hệ thống phân cấp Bộ sưu tập và cả hai đều triển khai giao diện Đặt. TreeSet là một lớp thực hiện giao diện Set và nó được sử dụng để lưu trữ các phần tử duy nhất theo thứ tự tăng dần. HashSet là một lớp thực hiện giao diện Set và nó được sử dụng để lưu trữ các phần tử duy nhất bằng cách sử dụng cơ chế Hashing. Sự khác biệt chính giữa TreeSet và HashSet là TreeSet lưu trữ các phần tử theo thứ tự tăng dần trong khi HashSet không lưu trữ các phần tử theo thứ tự tăng dần. Cả TreeSet và HashSet đều chỉ lưu trữ các phần tử duy nhất.
TreeSet là gì?
TreeSet lớp cài đặt giao diện NavigableSet. Giao diện NavigableSet mở rộng các giao diện SortedSet, Set, Collection và Iterable theo thứ tự phân cấp. TreeSet luôn duy trì thứ tự tăng dần. Nếu các phần tử được chèn theo thứ tự B, A, C, chúng sẽ được lưu trữ dưới dạng A, B, C. Các phương thức như add (), remove () có thể được sử dụng với đối tượng TreeSet. Phương thức add có thể được sử dụng để thêm một phần tử. Phương thức remove được sử dụng để xóa một phần tử khỏi tập hợp. Đó là một số phương pháp có thể được sử dụng với TreeSet.
Hình 01: Chương trình với TreeSet
Theo chương trình trên, một đối tượng kiểu TreeSet được tạo. Các phần tử dữ liệu chuỗi được thêm vào đối tượng đó bằng cách sử dụng phương thức thêm. Thứ tự được chèn dữ liệu là A, D, A, B, C, D. Sử dụng trình lặp, các giá trị được lưu trữ sẽ được in ra màn hình. Đầu ra là A, B, C, D. Mặc dù có hai chữ cái A và hai chữ cái D, đầu ra hiển thị mỗi chữ A và một chữ D. Do đó, TreeSet lưu trữ các phần tử duy nhất. Không có thứ tự chèn cụ thể nhưng khi quan sát đầu ra, có thể thấy TreeSet duy trì thứ tự tăng dần của các phần tử.
HashSet là gì?
Lớp HashSet mở rộng lớp AbstractSet thực hiện Giao diện Thiết lập. Giao diện Set kế thừa các giao diện Collection và Iterable theo thứ tự phân cấp. Trong HashSet, không có gì đảm bảo rằng các phần tử sẽ duy trì thứ tự tăng dần và thứ tự đã chèn. Nếu thứ tự đã chèn là A, B, C thì các giá trị có thể lưu trữ dưới dạng C, A, B. Thứ tự lưu trữ cũng có thể là A, B, C nhưng không có gì đảm bảo rằng thứ tự đã chèn hoặc thứ tự tăng dần được duy trì.
Hình 02: Chương trình với HashSet
Theo chương trình trên, một đối tượng kiểu HashSet được tạo. Các phần tử dữ liệu chuỗi được thêm vào đối tượng đó bằng cách sử dụng phương thức thêm. Thứ tự được chèn dữ liệu là L, R, M, M, R, L. Sử dụng trình lặp, các giá trị được lưu trữ sẽ được in ra màn hình. Đầu ra là R L M. Mặc dù, có hai chữ cái L, R và M từ mỗi chữ cái, chỉ một chữ cái của mỗi chữ cái được hiển thị. Do đó, HashSet lưu trữ các phần tử duy nhất. Khi quan sát đầu ra, có thể thấy rằng không có thứ tự tăng dần hoặc thứ tự được chèn vào vẫn được duy trì.
Điểm giống nhau giữa TreeSet và HashSet là gì?
- Cả TreeSet và HashSet đều là các lớp thuộc phân cấp bộ sưu tập.
- Cả TreeSet và HashSet chỉ lưu trữ các yếu tố duy nhất.
- Cả TreeSet và HashSet đều có thể được sử dụng để lưu trữ và thao tác nhiều phần tử.
- Cả TreeSet và HashSet đều không duy trì thứ tự đã chèn.
Sự khác biệt giữa TreeSet và HashSet là gì?
TreeSet vs HashSet |
|
TreeSet là một lớp trong hệ thống phân cấp bộ sưu tập được sử dụng để lưu trữ các phần tử duy nhất theo thứ tự tăng dần. | HashSet là một lớp trong hệ thống phân cấp bộ sưu tập được sử dụng để lưu trữ các phần tử duy nhất bằng cách sử dụng cơ chế băm. |
Lưu trữ phần tử | |
TreeSet lưu trữ các phần tử theo thứ tự tăng dần. | HashSet không lưu trữ các phần tử theo thứ tự tăng dần. |
Tóm tắt - TreeSet vs HashSet
Trong lập trình, yêu cầu phải lưu động các phần tử dữ liệu. Các ngôn ngữ lập trình như Java hỗ trợ Collections để đạt được nhiệm vụ này. Có một số giao diện và lớp trong hệ thống phân cấp bộ sưu tập. TreeSet và HashSet là hai lớp trong hệ thống phân cấp Bộ sưu tập. Cả hai đều thực hiện giao diện Đặt. TreeSet là một lớp thực hiện giao diện Set và nó được sử dụng để lưu trữ các phần tử duy nhất theo thứ tự tăng dần. HashSet là một lớp thực hiện giao diện Set và nó được sử dụng để lưu trữ các phần tử duy nhất bằng cách sử dụng cơ chế Hashing. Sự khác biệt giữa TreeSet và HashSet là TreeSet lưu trữ các phần tử theo thứ tự tăng dần trong khi HashSet không lưu trữ các phần tử theo thứ tự tăng dần. Bài viết này đã thảo luận về sự khác biệt giữa TreeSet và HashSet.