Làm thế nào để triển khai giao diện bản đồ trong Java?



Bài viết này về Java Map Inteface sẽ giúp bạn hiểu cách Map hoạt động trong Java và giới thiệu cho bạn các lớp khác nhau triển khai Map Interface

Một trong những chủ đề thú vị nhất trong Java là giao diện Bản đồđại diện cho một ánh xạ giữa một khóa và một giá trị.Nó thường bị hiểu nhầm là một loại phụ của giao diện trong Java.Bài viết này về Giao diện bản đồ Java sẽ giúp bạn hiểu và nắm vững cách bản đồ hoạt động trong .

Dưới đây là các chủ đề được đề cập trong bài viết này:





Giao diện bản đồ Java

Bản đồ trong Java là một vật ánh xạ các khóa tới các giá trị và được thiết kế để tra cứu nhanh hơn. Dữ liệu được lưu trữ trong các cặp khóa-giá trị và mọi khóa là duy nhất. Mỗi khóa ánh xạ đến một giá trị do đó có tên bản đồ. Các cặp khóa-giá trị này được gọi là các mục nhập bản đồ.

Bản đồ trong Java - Giao diện bản đồ Java - Edureka



bên trong , java.util.Map là một bao gồm các chữ ký phương thức để chèn, loại bỏ và truy xuất các phần tử dựa trên một khóa. Với các phương pháp như vậy, nó là một công cụ hoàn hảo để sử dụng cho việc lập bản đồ liên kết khóa-giá trị chẳng hạn như từ điển.

Đặc điểm của giao diện bản đồ

  • Giao diện Bản đồ không phải là một kiểu phụ thực sự của giao diện Bộ sưu tập, do đó,các đặc điểm và hành vi của nó khác với các loại tập hợp còn lại.
  • Nó cung cấpba chế độ xem tập hợp - tập hợp các khóa, tập hợp các ánh xạ khóa-giá trị và tập hợp các giá trị.
  • ĐẾNBản đồkhông được chứa các khóa trùng lặp và mỗi khóa có thể ánh xạ đến nhiều nhất một giá trị. Một số triển khai cho phép khóa null và giá trị null ( HashMap và LinkedHashMap ) nhưng một số thì không ( Bản đồ cây).
  • Tuy nhiên, giao diện Bản đồ không đảm bảo thứ tự của các ánh xạ, nó phụ thuộc vào việc triển khai. Ví dụ, Bản đồ băm không đảm bảo thứ tự của các ánh xạ nhưng TreeMap làm.
  • Lớp AbstractMap cung cấp một triển khai cơ bản của giao diện Bản đồ Java và hầu hết các bản đồ cụ thể của Bản đồ các lớp học mở rộng lớp AbstractMap và triển khai các phương thức bắt buộc.

Bây giờ bạn đã có ý tưởng về giao diện Bản đồ trong là, hãy tiếp tục và kiểm tra hệ thống phân cấp của Bản đồ Java.

Cấu trúc phân cấp bản đồ Java

Có hai giao diện triển khai Bản đồ trong java: Bản đồ và SortedMap. Và các lớp triển khai phổ biến của Bản đồ trong Java là HashMap, TreeMap LinkedHashMap. Phân cấp của Java Map được đưa ra dưới đây:



chuỗi con trong ví dụ máy chủ sql

Trước khi chúng ta kiểm tra ba lớp triển khai của Giao diện Bản đồ Java được đề cập ở trên, đây là một số phương pháp phổ biến mà bạn có thể gặp khi làm việc với Bản đồ.

Các phương thức trong giao diện bản đồ Java

Phương pháp

Sự miêu tả

bán công khai (Khóa đối tượng, Giá trị đối tượng)Phương pháp này chèn một mục vào bản đồ
công cộngvoid putAll (Bản đồ bản đồ)Phương pháp này chèn bản đồ đã chỉ định vào bản đồ này
public Object remove (Object key)Nó được sử dụng để xóa một mục nhập cho khóa được chỉ định
public Set keySet ()Nó trả về dạng xem Đặt có chứa tất cả các khóa
public Set entrySet ()Nó trả về dạng xem Đặt có chứa tất cả các khóa và giá trị
void clear ()Nó được sử dụng để đặt lại bản đồ
public void putIfAbsent (khóa K, giá trị V)Nó chỉ chèn giá trị được chỉ định với khóa được chỉ định trong bản đồ nếu nó chưa được chỉ định
public Object get (Khóa đối tượng)Nó trả về giá trị cho khóa được chỉ định
boolean công cộng chứaKey (Khóa đối tượng)
Nó được sử dụng để tìm kiếm khóa được chỉ định từ bản đồ này

Triển khai Bản đồ

Có một số triển khai Bản đồ Javanhưng ba cách triển khai mục đích chính và mục đích chung làHashMap, TreeMap và LinkedHashMap.Hãy xem các đặc điểm và hành vi của từng cách triển khai với một ví dụ

Lớp HashMap

Lớp phổ biến nhất thực hiện giao diện Java Map là HashMap. Nó là một triển khai dựa trên bảng băm của giao diện Bản đồ.Nó thực hiện tất cả các hoạt động của Bản đồvà cho phép các giá trị null và một khóa null. Ngoài ra, lớp này không duy trì bất kỳ thứ tự nào giữa các phần tử của nó. Đây là một chương trình ví dụ minh họa lớp HashMap.

package MyPackage import java.util. * class HashMapExample {public static void main (String [] args) {Bản đồ các khóa học = new HashMap () // Thêm một số khóa học. Course.put ('Các khóa học Java', Số nguyên mới (6)) các khóa học.put ('Các Khóa học Đám mây', Số nguyên mới (7)) các khóa học.put ('Các Khóa học Lập trình', Số nguyên mới (5)) các khóa học.put (' Khóa học Khoa học Dữ liệu ', Số nguyên mới (2)) System.out.println (' Tổng số khóa học: '+ Course.size ()) Bộst = Course.entrySet () for (Map.Entry me: st) {System.out.print (me.getKey () + ':') System.out.println (me.getValue ())} System.out. println () String searchKey = 'Các khóa học Java' if (Course.containsKey (searchKey)) System.out.println ('Tìm thấy tổng số' + các khóa học.get (searchKey) + '' + searchKey)}}

Đầu ra

Tổng số khóa học: 4 Khóa học trên đám mây: 7 Khóa học về lập trình: 5 Khóa học về Khoa học dữ liệu: 2 Khóa học về Java: 6 Khóa học về Java được tìm thấy

Trong chương trình trên, tôi đã sử dụng rất nhiều phương pháp được đề cập trong bảng. Thứ nhất, đặt() phương pháp chèn 4 mục nhập vào bản đồ và kích thước() trong bước tiếp theo hiển thị kích thước của bản đồ (tổng số cặp khóa-giá trị). Sau đó, trong bước tiếp theo, entrySet () phương thức trả về tất cả các cặp khóa-giá trị. Chương trình cũng chỉ ra cách sử dụng được() để tìm kiếm một giá trị bằng cách sử dụng khóa được liên kết.

Hãy chuyển sang lớp tiếp theo thực hiện Giao diện bản đồ Java - Bản đồ cây.

Lớp TreeMap

Việc triển khai này sử dụng cây Đỏ-Đen làm cơ sở cấu trúc dữ liệu . Sơ đồ cây được sắp xếp theo thứ tự tự nhiên của các khóa của nó hoặc theo Bộ so sánh được cung cấp tại thời điểm tạo. Triển khai này không cho phép null nhưng duy trìthứ tự trên các phần tử của nó. Đây là một chương trình ví dụ minh họa lớp TreeMap.

package MyPackage import java.util. * class TreeMapEx {public static void main (String [] args) {Bản đồ các khóa học = new TreeMap () // Thêm một số khóa học. course.put ('Khoá học Java', Số nguyên mới (3)) khoá học.put ('Các khoá học AWS', Số nguyên mới (7)) khoá học.put ('Khoá học Lập trình', Số nguyên mới (8)) khoá học.put (' Khóa học Khoa học Dữ liệu ', Số nguyên mới (2)) System.out.println (' Tổng số khóa học: '+ Course.size ()) Bộst = Course.entrySet () for (Map.Entry me: st) {System.out.print (me.getKey () + ':') System.out.println (me.getValue ())} System.out. println ()}}

Đầu ra

Tổng số khóa học: 4 Khóa học AWS: 7 Khóa học Khoa học Dữ liệu: 2 Khóa học Java: 3 Khóa học Lập trình: 8

Trong đầu ra, các phần tử của bản đồ được in theo thứ tự từ điển nghiêm ngặt, điều này không xuất hiện trong các ví dụ trước của HashMap. Lớp tiếp theo mà chúng ta sẽ thảo luận là LinkedHashMap .

Lớp LinkedHashMap

Như tên cho thấy việc triển khai này của giao diện Bản đồ Java sử dụng bảng băm và danh sách được liên kết làm cấu trúc dữ liệu cơ bản. Do đó, thứ tự của một LinkedHashMap làcó thể dự đoán được, với thứ tự chèn là thứ tự mặc định. Ngoài ra, cho phép null như trong HashMap. Đây là một chương trình ví dụ minh họa lớp TreeMap.

package MyPackage import java.util. * public class LinkedHashMapExample {public static void main (String a []) {LinkedHashMap Course = new LinkedHashMap () Course.put ('Java Courses', new Integer (3)) Course.put (' Khóa học đám mây ', Số nguyên mới (7)) khóa học.put (' Khóa học lập trình ', Khóa học số nguyên mới (8)) khóa học.put (' Khóa học Khoa học dữ liệu ', Số nguyên mới (2)) // Nó in các phần tử theo cùng một thứ tự // khi chúng được chèn System.out.println (các khóa học) System.out.println ('Tổng số các khóa học:' + Course.size ()) System.out.println ('Chứa khóa' Hadoop '?' + Course.containsKey ('Hadoop')) System.out.println ('Nhận giá trị cho khóa' Các Khóa học Lập trình ':' + Course.get ('Các Khóa học Lập trình')) System.out.println ('Bản đồ có trống không?' + Course.isEmpty ()) System.out.println ('xóa phần tử' Các khóa học trên đám mây ':' + course.remove ('Các khóa học trên đám mây')) System.out.println (các khóa học)}}

Đầu ra

{Khóa học Java = 3, Khóa học trên đám mây = 7, Khóa học lập trình = 8, Khóa học về khoa học dữ liệu = 2} Tổng số khóa học: 4 Chứa khóa 'Hadoop'? false Nhận giá trị cho khóa 'Các Khóa học Lập trình': 8 Bản đồ có trống không? phần tử xóa sai 'Khóa học trên đám mây': 7 {Khóa học Java = 3, Khóa học lập trình = 8, Khóa học về khoa học dữ liệu = 2}

Chương trình ví dụ khá đơn giản để hiểu. Tôi đã sử dụng một số phương pháp cơ bản để chứng minh hoạt động của LinkeHashMap trong Java. Như tôi đã nói trước đó, ngoài ba lớp này ra còn có rất nhiều lớp khác triển khai giao diện Java Map.

Phần này đưa chúng ta đến phần cuối của bài viết ‘Giao diện bản đồ Java’ này. Tôi đã đề cập đến một trong những chủ đề thú vị của Java, đó là Giao diện bản đồ trong Java.

Đảm bảo rằng bạn luyện tập nhiều nhất có thể và hoàn nguyên trải nghiệm của mình.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Chúng tôi ở đây để giúp bạn từng bước trong hành trình của bạn, để trở thành một người ngoài câu hỏi phỏng vấn java này, chúng tôi còn đưa ra một chương trình giảng dạy được thiết kế cho sinh viên và chuyên gia muốn trở thành một Nhà phát triển Java.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của ‘giao diện Bản đồ java’ này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.