Sự khác biệt giữa HashMap và TreeMap trong Java

Tác Giả: Laura McKinney
Ngày Sáng TạO: 2 Tháng Tư 2021
CậP NhậT Ngày Tháng: 14 Có Thể 2024
Anonim
Sự khác biệt giữa HashMap và TreeMap trong Java - Công Nghệ
Sự khác biệt giữa HashMap và TreeMap trong Java - Công Nghệ

NộI Dung


HashMap và TreeMap là các lớp Map và cả hai đều thực hiện giao diện Map. Bản đồ là một đối tượng lưu trữ các cặp khóa-giá trị, trong đó mỗi khóa là duy nhất và có thể có các giá trị trùng lặp. Lớp HashMap sử dụng bảng băm làm cấu trúc dữ liệu. TreeMap sử dụng cây đỏ-đen làm cấu trúc dữ liệu. Sự khác biệt chính giữa HashMap và Treemap là Bản đồ băm không bảo toàn thứ tự chèn trong khi, Bản đồ làm.

Vì vậy, chúng ta hãy bắt đầu cuộc thảo luận của chúng tôi về sự khác biệt giữa HashMap và TreeMap với sự trợ giúp của biểu đồ so sánh được hiển thị bên dưới.

  1. Biểu đồ so sánh
  2. Định nghĩa
  3. Sự khác biệt chính
  4. Phần kết luận

Biểu đồ so sánh

Cơ sở để so sánhBản đồ bămBản đồ cây
Căn bản HashMap không duy trì thứ tự chèn.TreeMap duy trì thứ tự chèn.
Cấu trúc dữ liệuHashMap sử dụng Bảng Hash làm cấu trúc dữ liệu cơ bản.TreeMap sử dụng Red-Black Tree làm cấu trúc dữ liệu cơ bản.
Khóa và giá trị Null HashMap cho phép khóa Null một lần quảng cáo Null giá trị bất kỳ số lượng thời gian.TreeMap không cho phép khóa Null nhưng cho phép Null Values ​​bất kỳ số lượng thời gian.
Mở rộng và triển khaiHashMap mở rộng lớp AbstractMap và thực hiện giao diện Bản đồ.TreeMap mở rộng lớp AbstractMap và thực hiện giao diện SortedMap và NavigableMap.
Hiệu suấtHashMap hoạt động nhanh hơn.TreeMap so với HashMap hoạt động chậm hơn.


Định nghĩa của HashMap

Bản đồ băm là một lớp Bản đồ. Nó sử dụng bảng băm, như một cấu trúc dữ liệu để lưu trữ cặp giá trị khóa bản đồ. Việc chèn cặp khóa-giá trị được thực hiện bằng cách sử dụng Mã Băm của chìa khóa. Do đó, mỗi khóa trong bản đồ phải là duy nhất vì nó sẽ được sử dụng để truy xuất các giá trị.

Thứ tự chèn trong HashMap là không phải được bảo tồn có nghĩa là đối tượng hashmap không trả về các phần tử theo thứ tự chúng được chèn vào. Mặt khác, thứ tự các phần tử sẽ được trả về không cố định.

Các Chìa khóa được phép là VÔ GIÁ TRỊ cùng một lúc, nhưng giá trị có thể VÔ GIÁ TRỊ tại bất kỳ số lượng thời gian. HashMap có thể chứa không đồng nhất các đối tượng cho các khóa cũng như các giá trị.


Có bốn hàm tạo của HashMap:

HashMap () HashMap (Bản đồ m) HashMap (dung lượng int), HashMap (int dung lượng, float fillRatio)

Các Đầu tiên constructor tạo đối tượng trống của HashMap. Các thứ hai constructor khởi tạo HashMap bằng các phần tử của Map m. Các thứ ba constructor khởi tạo HashMap với dung lượng được cung cấp trong đối số. Các thứ tư constructor khởi tạo dung lượng cũng như tỷ lệ lấp đầy của đối tượng HashMap.

Mặc định sức chứa của HashMap là 16và mặc định tỷ lệ lấp đầy của HashMap là 0.75.

Định nghĩa của TreeMap

Giống như HashMap, Bản đồ cây cũng là một lớp Bản đồ. TreeMap mở rộng Tóm tắt lớp và thực hiện Bản đồSắp xếp bản đồ. Các đối tượng TreeMap lưu trữ các thành phần bản đồ trong cấu trúc cây. Cấu trúc dữ liệu được sử dụng để lưu trữ Bản đồ là Cây đỏ-đen.

TreeMap lưu trữ cặp giá trị khóa theo thứ tự được sắp xếp giúp truy xuất nhanh các phần tử. Đối tượng TreeMap trả về các phần tử trong đã sắp xếp (tăng dần) gọi món.

Có bốn hàm tạo của TreeMap:

TreeMap () TreeMap (Trình so sánh <? Super K> comp) TreeMap (Map <? Extends K ,? Extends V> m) TreeMap (SortedMap sm)

Các Đầu tiên các hàm tạo tạo một đối tượng trống của TreeMap sẽ được sắp xếp theo thứ tự tự nhiên các khóa của nó. Các thứ hai constructor sẽ tạo một bản đồ cây trống sẽ được sắp xếp theo So sánh cmp. Các thứ ba hàm tạo ở trên sẽ tạo một bản đồ tre sẽ được khởi tạo bằng các mục nhập của Bản đồ m. Các thứ tư constructor sẽ tạo một bản đồ tre sẽ được khởi tạo bằng các mục nhập của Sắp xếp bản đồ sm.

Treemap không có bất kỳ phương thức mới nào, nó sử dụng phương thức giao diện NavigableMap và SortedMap và lớp AbstractMap.

  1. Cả hai lớp được sử dụng để tạo các đối tượng bản đồ, nhưng điểm khác biệt cơ bản giữa HashMap và Treemap là HashMap không duy trì thứ tự chèn trong khi Treemap thì có.
  2. Cấu trúc dữ liệu được Hashmap sử dụng để lưu trữ các phần tử bản đồ là bảng băm và cấu trúc dữ liệu được TreeMap sử dụng để lưu trữ các phần tử bản đồ là cây đỏ-đen.
  3. Cả hai lớp Hashmap và Treemap đều mở rộng lớp AbstractMap, nhưng lớp HashMap thực hiện giao diện Map và TreeMap thực hiện giao diện NavigableMap và SortedMap.
  4. Các giá trị có thể là Null bất kỳ số lượng thời gian nào trong cả hai nhưng khóa chỉ được phép là Null một lần trong HashMap và một khóa không bao giờ có thể có trong Treemap.
  5. Hiệu suất của HashMap nhanh hơn, không lãng phí thời gian vào việc sắp xếp các thành phần bản đồ như TreeMap. Do đó, TreeMap hoạt động chậm hơn HashMap.

Phần kết luận:

TreeMap chỉ nên được sử dụng khi bạn yêu cầu cặp giá trị khóa ở dạng được sắp xếp. Như sắp xếp bao gồm chi phí hiệu suất. HashMap không đồng bộ hoạt động nhanh hơn.