ทำซ้ำบนแผนที่ใน Java

1. ภาพรวม

ในบทความสั้น ๆ นี้เราจะมาดูวิธีต่างๆในการทำซ้ำผ่านรายการของแผนที่ใน Java

ใส่เพียงแค่เราสามารถดึงเนื้อหาของแผนที่โดยใช้ชุดคีย์ () valueSet ()หรือentrySet () เนื่องจากสิ่งเหล่านี้เป็นชุดทั้งหมดจึงใช้หลักการทำซ้ำที่คล้ายกันกับชุดทั้งหมด

Map.entrySet API ส่งกลับคอลเลกชันมุมมองของแผนที่ซึ่งเป็นธาตุจากแผนที่ระดับ วิธีเดียวที่จะได้รับการอ้างอิงไปยังรายการแผนที่เดียวคือจากตัววนซ้ำของมุมมองคอลเล็กชันนี้

เขาentry.getKey ()ส่งคืนคีย์และentry.getValue ()ส่งคืนค่าที่เกี่ยวข้อง

ลองมาดูบางส่วนเหล่านี้

2. EntrySetและสำหรับ Loop

ก่อนอื่นเรามาดูวิธีการวนซ้ำผ่านแผนที่โดยใช้ชุดรายการ :

public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } }

ที่นี่เรากำลังแปลงแผนที่ของเราเป็นชุดของรายการจากนั้นจึงทำซ้ำโดยใช้วิธีการแบบคลาสสิกสำหรับแต่ละวิธี

เราสามารถเข้าถึงคีย์ของแต่ละรายการโดยเรียกgetKey ()และเราสามารถเข้าถึงค่าของแต่ละรายการได้โดยเรียกgetValue ()

3. IteratorและEntrySet

อีกวิธีหนึ่งคือการได้รับชุดของรายการและทำการวนซ้ำโดยใช้Iterator:

public void iterateUsingIteratorAndEntry(Map map) { Iterator
    
      iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); System.out.println(entry.getKey() + ":" + entry.getValue()); } }
    

สังเกตว่าเราสามารถรับอินสแตนซ์Iteratorโดยใช้iterator () API ของentrySet () ได้อย่างไร จากนั้นตามปกติเราวนซ้ำตัววนซ้ำด้วยiterator.next ()

4. ด้วย Lambdas

ตอนนี้เรามาดูวิธีการทำแผนที่ซ้ำโดยใช้นิพจน์แลมบ์ดา

เช่นเดียวกับสิ่งอื่น ๆ ส่วนใหญ่ใน Java 8 สิ่งนี้กลายเป็นเรื่องง่ายกว่าทางเลือกอื่นมาก เราจะใช้เมธอดforEach () :

public void iterateUsingLambda(Map map) { map.forEach((k, v) -> System.out.println((k + ":" + v))); } 

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

5. สตรีม API

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

public void iterateUsingStreamAPI(Map map) { map.entrySet().stream() // ... .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); } 

สิ่งนี้ควรใช้เมื่อเราวางแผนที่จะทำการประมวลผลสตรีมเพิ่มเติม มิฉะนั้นมันเป็นเพียงแค่forEach ()ตามที่อธิบายไว้ก่อนหน้านี้

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับStream API โปรดอ่านบทความนี้

6. บทสรุป

ในบทช่วยสอนนี้เรามุ่งเน้นไปที่การดำเนินการที่เรียบง่าย แต่มีความสำคัญ - การวนซ้ำผ่านรายการของแผนที่

เราได้เห็นวิธีการสองสามวิธีที่สามารถใช้ได้กับ Java 8 เท่านั้น ได้แก่ นิพจน์ Lambda และStream API

เช่นเคยตัวอย่างโค้ดในบทความสามารถพบได้ใน GitHub