CodeGym /จาวาบล็อก /สุ่ม /วิธีทำซ้ำแผนที่ใน Java
John Squirrels
ระดับ
San Francisco

วิธีทำซ้ำแผนที่ใน Java

เผยแพร่ในกลุ่ม
ในโพสต์นี้ เราจะเรียนรู้วิธีต่างๆ ในการวนซ้ำแผนที่ใน Java วิธีทั่วไปบางประการและวิธีการใช้ด้วยความช่วยเหลือจากตัวอย่าง ก่อนเริ่มต้น เราถือว่าคุณเข้าใจอินเทอร์เฟซและแผนที่ใน Java อย่างไรก็ตาม นี่คือบทสรุปสั้นๆ สำหรับคุณ

แผนที่ใน Java คืออะไร

มีการตีความหลายอย่าง แต่ขอพูดง่ายๆ แบบนี้
“Map เป็นส่วนต่อประสานในภาษา Java ที่ใช้เก็บข้อมูลในรูปแบบของคู่คีย์-ค่า”
หากคุณกำลังคิดว่าแผนที่ใช้สำหรับทำอะไร? หรือจำเป็นเมื่อใด จากนั้นมีสถานการณ์มากมายในชีวิตจริงเมื่อเราต้องจัดเก็บข้อมูลเป็นคู่คีย์-ค่า ตัวอย่างเช่น คำทั้งหมดที่ตรงกับตัวอักษรตัวเดียวในพจนานุกรมสามารถจัดเก็บในรูปแบบของแผนที่ในภาษาจาวา
เค ว่าว ราชา เกาหลี อัศวิน... ฯลฯ
แอล ลาวา ชีวิต แสงสว่าง ความรัก เลบานอน... ฯลฯ
นอกจากนี้ คุณสามารถดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจให้ดียิ่งขึ้น
สำคัญ ค่า
รหัสครอบครัว สมาชิกในครอบครัว
ชื่อชั้น รหัสนักศึกษา
ชื่อพื้นที่ รหัสไปรษณีย์
บล็อกพื้นที่ บ้านเลขที่

ทำไมเราต้องทำซ้ำผ่านแผนที่?

เราจำเป็นต้องสำรวจหรือวนซ้ำแผนที่เพื่อเข้าถึง แก้ไข หรือลบข้อมูล ลองสำรวจตัวเลือกบางอย่างที่เรามี

วิธีทั่วไปในการทำซ้ำแผนที่ใน Java มีอะไรบ้าง

แม้ว่าจะมีหลายวิธีในการสำรวจแผนที่ อย่างไรก็ตาม เราจะมุ่งเน้นไปที่วิธีที่มีประสิทธิภาพและเรียบง่ายที่สุด
  1. วิธีการวนรอบ ForEach
  2. วิธีการวนซ้ำ
โปรดดูการดำเนินการทั้งสองวิธีด้านล่าง

โดยใช้วิธี Foreach Loop

ตัวอย่าง


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()); 
		}
	}
}

เอาต์พุต

คีย์ = 1, คีย์เวิร์ด = วันจันทร์ คีย์ = 2, คีย์เวิร์ด = วันอังคาร คีย์ = 3, คีย์เวิร์ด = วันพุธ คีย์ = 4, คีย์เวิร์ด = วันพฤหัสบดี คีย์ = 5, คีย์เวิร์ด = วันศุกร์

คำอธิบาย

ในตัวอย่างนี้ เราใช้ foreach วนซ้ำเพื่อวนซ้ำแผนที่ เมื่อใช้ for-each loop เราจะได้รับชุดค่า ()ซึ่งให้ "มุมมอง" อัตโนมัติของข้อมูลในแผนที่ ในรูปแบบของคู่คีย์-ค่า แต่ละชุดรายการประกอบด้วยคีย์และค่าที่เกี่ยวข้อง ซึ่งคุณสามารถใช้เมธอดทั้งหมดของMap.Entry<key, value>ตามความต้องการของคุณ ที่นี่เราใช้เฉพาะgetKey()และgetValue()เพื่อแสดงข้อมูลบนคอนโซล ในแบบฝึกหัด คุณสามารถสำรวจวิธีการที่เหลือเพื่อเสริมสร้างคำสั่งของคุณในแนวคิดนี้

โดยใช้วิธี Iterators

ตัวอย่าง


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());

		}
	}
}

เอาต์พุต

คีย์ = 11, คีย์ = คีย์พฤศจิกายน = 1, คีย์ = คีย์มกราคม = 12, คีย์ = คีย์ธันวาคม = 2, คีย์เวิร์ด = คีย์กุมภาพันธ์ = 3, คีย์เวิร์ด = คีย์มีนาคม = 4, คีย์เวิร์ด = คีย์เมษายน = 5, คีย์เวิร์ด = คีย์พฤษภาคม = 6, ค่า = ปุ่มเดือนมิถุนายน = 7, ค่า = ปุ่มเดือนกรกฎาคม = 8, ค่า = ปุ่มเดือนสิงหาคม = 9, ค่า = ปุ่มเดือนกันยายน = 10, ค่า = ตุลาคม

คำอธิบาย

ในตัวอย่างนี้ เราสร้าง explicit iterator เพื่อสำรวจ / วนซ้ำบนแผนที่ ขั้นแรก คุณต้องนำเข้าคลาสตัววนซ้ำ จากนั้นรับตัววนซ้ำสำหรับชุดรายการ ตอนนี้สำรวจแผนที่ในขณะที่ตรวจสอบเอนทิตีถัดไปที่มีอยู่บนแผนที่ ไปแล้ว! การข้ามผ่านของคุณเสร็จสิ้น เพียงเท่านี้

Foreach loop ดีกว่าวิธี iterators หรือไม่?

ไม่สำคัญว่าคุณจะใช้วิธีใดในการสำรวจแผนที่ ตราบใดที่มันทำงานให้คุณ ในแง่ของประสิทธิภาพ ทั้ง for- each loop และ iterators มีความซับซ้อนของเวลาเท่ากัน ดังนั้นจึงไม่มีใครดีไปกว่าอย่างอื่น ขึ้นอยู่กับว่าคุณต้องใช้อะไรและเมื่อไหร่

ความแตกต่างระหว่างสองวิธีคืออะไร?

for-each ไม่อนุญาตให้อัปเดต/แก้ไขข้อมูลในแผนที่ ในทางตรงกันข้าม คุณสามารถแก้ไขข้อมูลได้อย่างง่ายดายโดยใช้ตัววนซ้ำ คลาส iterators อำนวยความสะดวกให้คุณโดยการปรับใช้เพื่อแก้ไข/ลบข้อมูลในแผนที่ ในทางกลับกัน หากคุณพยายามแก้ไข/ลบข้อมูลแผนที่โดยใช้ for-each วนซ้ำ จะทำให้เกิดConcurrentModificationException เหตุผลนี้คือ for-each วนซ้ำสร้างตัววนซ้ำโดยปริยายซึ่งไม่เปิดเผยต่อผู้ใช้ ดังนั้น คุณไม่มีสิทธิ์แก้ไขหรือลบข้อมูลใดๆ

ใช้วิธีผ่านช่องทางใดและเมื่อใด

หากคุณไม่แน่ใจว่าจะใช้ for-each หรือ iterators เพื่อวนซ้ำแผนที่ของคุณ คุณสามารถทำตามคำแนะนำต่อไปนี้
  • ใช้iteratorถ้าคุณต้องแก้ไขแผนที่
  • ใช้for-eachลูปหากคุณมีลูปที่ซ้อนกัน (เพื่อหลีกเลี่ยงความซับซ้อน)

บทสรุป

ในตอนท้ายของโพสต์ เราหวังว่าคุณจะได้เรียนรู้วิธีการวนซ้ำแผนที่ใน Java ขอแนะนำให้คุณฝึกฝนสิ่งเหล่านี้และลองใช้วิธีการผ่านเส้นทางอื่นๆ ด้วย อย่าลังเลที่จะย้อนกลับหรือโพสต์คำถามเมื่อใดก็ตามที่คุณรู้สึกติดขัด ถึงตอนนั้น ขอให้มีความสุขกับการเรียนรู้!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION