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