Sự khác biệt giữa HashMap và LinkedHashMap 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: 10 Có Thể 2024
Anonim
Sự khác biệt giữa HashMap và LinkedHashMap trong Java - Công Nghệ
Sự khác biệt giữa HashMap và LinkedHashMap trong Java - Công Nghệ

NộI Dung


HashMap và LinkedHashMap là các lớp, khá giống nhau và được sử dụng để tạo bản đồ. Lớp HashMap mở rộng lớp AbstractMap để sử dụng bảng băm để lưu trữ các phần tử trong bản đồ. Lớp LinkedHashMap duy trì các mục trong bản đồ dựa trên thứ tự chèn của chúng. Tính năng phân biệt HashMap và LinkedHashMap với nhau là Bản đồ băm không duy trì thứ tự của các mục được lưu trữ trong bản đồ. Mặt khác, LinkedHashMap sử dụng cấu trúc dữ liệu lai để duy trì thứ tự các mục mà chúng được chèn vào. Trong Biểu đồ so sánh bên dưới, tôi đã khám phá một số khác biệt khác giữa HashMap và LinkedHashMap chỉ cần xem qua.

  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ămLinkedHashMap
Căn bảnThứ tự chèn trong HashMap không được bảo tồn.Thứ tự chèn được bảo toàn trong LinkedHashMap.
Cấu trúc dữ liệuHashMap sử dụng HashTable để lưu trữ bản đồ.LinkedHashMap sử dụng HashTable cùng với Danh sách được liên kết để lưu trữ bản đồ.
Mở rộng / triển khaiHashMap mở rộng AbstractMap và thực hiện giao diện Map.LinkedHashMap mở rộng Hashmap.
Phiên bảnHashMap đã được giới thiệu trong JDK 2.0.LinkedHashMap đã được giới thiệu trong JDK 4.0.
Trên khôngTương đối ít chi phí.Chi phí tương đối nhiều hơn vì nó phải duy trì thứ tự của các mục bản đồ.


Định nghĩa của HashMap

HashMap là một lớp được sử dụng để tạo bản đồ. Nó thực hiện Bản đồ Giao diện. Nó cũng mở rộng Tóm tắt lớp để nó có thể sử dụng bảng băm để lưu các mục trong bản đồ. Các mục của bản đồ là một cặp trong đó mỗi khóa được liên kết với giá trị. Khóa trong mục nhập được sử dụng để truy xuất giá trị do đó, khóa phải là duy nhất. Đó là lý do tại sao các khóa trùng lặp không được phép trong HashMap. Nhưng khóa trong mỗi mục trên bản đồ có thể có loại khác nhau, tức là các khóa trong bản đồ được tạo bởi HashMap có thể không đồng nhất. Cấu trúc dữ liệu được HashMap sử dụng để lưu trữ bản đồ là bảng băm.

Thứ tự chèn của các mục trong HashMap không được giữ nguyên. Việc chèn các mục trong bản đồ được tạo bằng HashMap dựa trên mã băm được tính bởi các khóa trong các mục. Nếu do nhầm lẫn, bạn đã nhập một khóa trùng lặp trong HashMap, nó sẽ thay thế giá trị trước đó của khóa đó bằng giá trị mới được đề xuất và sẽ trả về giá trị cũ. Nếu không có khóa trùng lặp được sử dụng và không có sự thay thế nào xảy ra, khóa luôn trả về Null. Hãy cho chúng tôi xem làm thế nào để thêm các mục vào bản đồ băm với ví dụ sau.


Hashmap hm = Hashmap mới (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * đầu ra * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200}

Như trong đoạn mã trên, bạn có thể thấy tôi đã tạo một đối tượng của HashMap và thêm các mục nhập bằng phương thức put và khi tôi chỉnh sửa đối tượng HashMap, các mục nhập không được chỉnh sửa theo thứ tự chúng được chèn. Do đó, bạn không thể giả vờ thứ tự của các mục trong HashMap sẽ trả về. HashMap sử dụng tất cả các phương thức của giao diện Map và lớp AbstractMap và không giới thiệu bất kỳ phương thức mới nào; nó có các nhà xây dựng riêng của nó. Dung lượng mặc định của bản đồ băm là 16 và tỷ lệ lấp đầy mặc định là 0.75.

Định nghĩa của LinkedHashMap

LinkedHashMap cũng là một lớp sử dụng để tạo bản đồ. LinkedHashMap mở rộng Bản đồ băm lớp và được giới thiệu sau đó với HashMap trong phiên bản JDK 4.0. Là lớp con của lớp HashMap LinkedHashMap hoàn toàn giống với lớp HashMap bao gồm các hàm tạo và phương thức. Nhưng, LinkedHashMap khác nhau theo nghĩa là nó duy trì thứ tự chèn các mục trong bản đồ. Cấu trúc dữ liệu được LinkedHashMap sử dụng để lưu trữ bản đồ là danh sách liên kếtbảng băm.

Ngoài các phương thức được HashMap kế thừa, LinkedHashMap còn giới thiệu một phương thức mới đó là removeEldestEntry (). Phương pháp này được sử dụng để loại bỏ mục cũ nhất trong bản đồ. Dung lượng mặc định của LinkedHashMap là 16 và tỷ lệ lấp đầy mặc định là 0,75 cũng tương tự như lớp HashMap.

  1. Sự khác biệt quan trọng nhất là thứ tự chèn của HashMap là không được bảo quản trong khi đó, thứ tự chèn của LinkedHashMap là bảo quản.
  2. Cấu trúc dữ liệu được HashMap sử dụng để lưu trữ các yếu tố của bản đồ là Hashtable. Mặt khác, cấu trúc dữ liệu được sử dụng bởi LinkedHashMap là Danh sách liên kếtHashtable.
  3. Lớp HashMap mở rộng Tóm tắt lớp và thực hiện Bản đồ giao diện. Tuy nhiên, lớp LinkedHashMap là một lớp con của Bản đồ băm lớp tức là lớp LinkedHashMap mở rộng lớp HashMap.
  4. Lớp HashMap đã được giới thiệu trong JDK 2.0 phiên bản. Lớp LinkedHashMap đã được giới thiệu sau đó trong JDK 4.0 phiên bản.
  5. Lớp LinkedHashMap so sánh có nhiều chi phí hơn HashMap vì nó phải duy trì thứ tự của các phần tử được chèn trong bản đồ.

Phần kết luận:

LinkedHashMap chỉ được sử dụng khi chúng tôi quan tâm đến chuỗi các yếu tố được chèn trong bản đồ.