CodeGym /Blog Java /Ngẫu nhiên /Cách lặp lại Bản đồ trong Java

Cách lặp lại Bản đồ trong Java

Xuất bản trong nhóm
Trong bài đăng này, chúng ta sẽ tìm hiểu các cách khác nhau để lặp Bản đồ trong Java. Một số cách phổ biến của nó và cách sử dụng chúng với sự trợ giúp của các ví dụ. Trước khi bắt đầu, chúng tôi cho rằng bạn đã hiểu các giao diệnbản đồ trong Java. Tuy nhiên, đây là một bản tóm tắt nhanh chóng cho bạn.

Bản đồ trong Java là gì?

Có nhiều cách giải thích về điều này, nhưng chúng ta hãy đơn giản diễn đạt nó theo cách này.
“Bản đồ là một giao diện trong Java, được sử dụng để lưu trữ dữ liệu dưới dạng các cặp khóa-giá trị.”
Nếu bạn đang nghĩ về bản đồ dùng để làm gì? Hoặc khi nào chúng cần thiết? Sau đó, có nhiều tình huống trong cuộc sống thực khi chúng ta cần lưu trữ dữ liệu theo cặp khóa-giá trị. Ví dụ: tất cả các từ tương ứng với một chữ cái trong từ điển có thể được lưu trữ dưới dạng bản đồ trong Java.
K Kite, King, Korea, Knight,..., v.v.
l Lava, Life, Light, Love, Lebanon,..., v.v.
Hơn nữa, bạn có thể xem các ví dụ sau để hiểu điều này tốt hơn.
Chìa khóa Giá trị
ID gia đình Thành viên gia đình
Tên lớp ID sinh viên
Tên khu vực Mã Zip
khối khu vực số nhà

Tại sao chúng ta cần lặp qua Bản đồ?

Chúng tôi cần duyệt qua hoặc lặp lại trên bản đồ để truy cập, sửa đổi hoặc xóa dữ liệu. Hãy khám phá một số tùy chọn mà chúng tôi có.

Một số cách phổ biến để lặp Bản đồ trong Java là gì?

Mặc dù có nhiều cách để duyệt qua bản đồ. Tuy nhiên, chúng tôi sẽ tập trung vào những cách đơn giản và hiệu quả nhất.
  1. Phương thức Vòng lặp ForEach
  2. Phương thức Iterator
Vui lòng tìm cách triển khai cả hai phương pháp bên dưới.

Sử dụng phương pháp Vòng lặp Foreach

Ví dụ


import java.util.Map;
import java.util.HashMap;

public class ForEachDemo {

	public static void main(String[] args) {

		Map<String, String> businessDays = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		businessDays.put("1", "Monday");
		businessDays.put("2", "Tuesday");
		businessDays.put("3", "Wednesday");
		businessDays.put("4", "Thursday");
		businessDays.put("5", "Friday");

		// Iterating over the Map.entrySet() using map.forEach
		for (Map.Entry<String, String> entry : businessDays.entrySet()) 
		{
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue()); 
		}
	}
}

đầu ra

khóa = 1, giá trị = thứ hai key = 2, value = thứ ba khóa = 3, giá trị = Thứ Tư khóa = 4, giá trị = Thứ năm khóa = 5, giá trị = Thứ Sáu

Giải trình

Trong ví dụ này, chúng tôi đã sử dụng vòng lặp foreach để lặp lại trên bản đồ. Bằng cách sử dụng vòng lặp for-each, chúng tôi nhận được một entrySet() cung cấp "chế độ xem" tự động của dữ liệu trong bản đồ, ở dạng các cặp khóa-giá trị. Mỗi entrySet chứa một khóa và các giá trị tương ứng. Nơi bạn có thể sử dụng tất cả các phương thức của Map.Entry<key, value> theo yêu cầu của bạn. Ở đây, chúng tôi chỉ sử dụng getKey()getValue() để hiển thị dữ liệu trên bàn điều khiển. Như một bài tập, bạn có thể khám phá phần còn lại của các phương pháp để củng cố mệnh lệnh của mình đối với khái niệm này.

Sử dụng phương thức Iterator

Ví dụ


import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class MapIterator {

	public static void main(String[] args) {

		Map<String, String> monthsInAYear = new HashMap<String, String>();

		// store business days i-e; key/value pairs in the Map
		monthsInAYear.put("1", "January");
		monthsInAYear.put("2", "February");
		monthsInAYear.put("3", "March");
		monthsInAYear.put("4", "April");
		monthsInAYear.put("5", "May");
		monthsInAYear.put("6", "June");
		monthsInAYear.put("7", "July");
		monthsInAYear.put("8", "August");
		monthsInAYear.put("9", "September");
		monthsInAYear.put("10", "October");
		monthsInAYear.put("11", "November");
		monthsInAYear.put("12", "December");

		// iterate map / traverse the map using using iterator
		Iterator<Map.Entry<String, String>> iterator = monthsInAYear.entrySet().iterator();

		while (iterator.hasNext()) 
		{
			// check if next entry exists in the map
			Map.Entry<String, String> entry = iterator.next(); 
			System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());

		}
	}
}

đầu ra

khóa = 11, giá trị = tháng 11 khóa = 1, giá trị = tháng 1 khóa = 12, giá trị = tháng 12 khóa = 2, giá trị = tháng 2 khóa = 3, giá trị = tháng 3 khóa = 4, giá trị = tháng 4 khóa = 5, giá trị = tháng 5 khóa = 6, giá trị = tháng 6 khóa = 7, giá trị = tháng 7 khóa = 8, giá trị = tháng 8 khóa = 9, giá trị = tháng 9 khóa = 10, giá trị = tháng 10

Giải trình

Trong ví dụ này, chúng tôi tạo trình vòng lặp rõ ràng để duyệt/lặp qua bản đồ. Trước tiên, bạn cần nhập lớp trình vòng lặp, sau đó lấy trình vòng lặp cho entrySet. Bây giờ hãy duyệt qua bản đồ trong khi tiếp tục kiểm tra thực thể tiếp theo tồn tại trên bản đồ. Có bạn đi! Quá trình truyền tải của bạn đã hoàn tất, chỉ cần như vậy.

Vòng lặp Foreach có tốt hơn phương thức lặp không?

Việc bạn sử dụng phương pháp nào để duyệt bản đồ không quan trọng miễn là nó phù hợp với bạn. Xét về hiệu suất, cả vòng lặp for-each và iterators đều có cùng độ phức tạp về thời gian . Vì vậy, không cái nào tốt hơn cái nào, nó phụ thuộc vào những gì bạn cần sử dụng và khi nào.

Sự khác biệt giữa hai phương pháp là gì?

Vòng lặp for-each không cho phép cập nhật/sửa đổi dữ liệu trong bản đồ. Ngược lại, bạn có thể dễ dàng sửa đổi dữ liệu bằng cách sử dụng các trình vòng lặp. Lớp iterators hỗ trợ bạn bằng cách cung cấp triển khai để chỉnh sửa/xóa dữ liệu trong bản đồ. Ngược lại, nếu bạn cố gắng chỉnh sửa/xóa dữ liệu bản đồ bằng cách sử dụng vòng lặp for-each, nó sẽ đưa ra một ConcurrentModificationException . Lý do cho điều này là vòng lặp for-each ngầm tạo một trình vòng lặp, mà không được hiển thị cho người dùng. Do đó, bạn không có quyền truy cập để sửa đổi hoặc xóa bất kỳ dữ liệu nào.

Phương pháp truyền tải nào sẽ được sử dụng và khi nào?

Nếu bạn không chắc nên sử dụng for-each hay iterators để lặp lại bản đồ của mình, thì bạn có thể thực hiện các đề xuất sau.
  • Sử dụng iterator nếu bạn phải sửa đổi bản đồ.
  • Sử dụng vòng lặp for-each nếu bạn có các vòng lặp lồng nhau (để tránh phức tạp).

Phần kết luận

Đến cuối bài này, chúng tôi hy vọng bạn đã học được cách lặp lại bản đồ trong Java. Bạn được khuyến khích thực hành những điều này và cũng thử các phương pháp duyệt khác. Vui lòng quay lại hoặc đăng câu hỏi bất cứ khi nào bạn cảm thấy bế tắc. Cho đến lúc đó, học tập vui vẻ!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION