Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะเริ่มต้นคอลเลกชันที่ไม่เปลี่ยนรูปใน Java 9 ได้อย่างไร


Java 9 มี โรงงาน วิธีการ เพื่อสร้าง ไม่เปลี่ยนรูป รายการ , ชุด และ แผนที่ . อาจมีประโยชน์ในการสร้าง ว่าง หรือ ไม่ว่าง วัตถุสะสม ใน Java 8 และเวอร์ชันก่อนหน้า เราสามารถใช้วิธียูทิลิตี้คลาสคอลเลกชัน เช่น unmodifiableXXX เพื่อสร้าง ไม่เปลี่ยนรูป วัตถุสะสม หากเราต้องการสร้างรายการที่ไม่เปลี่ยนรูป ให้ใช้ Collections.unmodifiableList() วิธีการ

วิธีการจากโรงงานเหล่านี้ช่วยให้เราเริ่มต้นคอลเล็กชันที่ไม่เปลี่ยนรูปได้โดยง่าย ไม่ว่าจะ ว่างเปล่า หรือ ไม่ว่าง

การเริ่มต้นของรายการที่ไม่เปลี่ยนรูป:

List immutableEmptyList =List.of(); 

ในข้างต้น เราได้เริ่มต้นว่างเปล่า ไม่เปลี่ยนรูป รายการ .

การเริ่มต้นของชุดที่ไม่เปลี่ยนรูป:

Set immutableEmptySet =Set.of(); 

ในข้างต้น เราได้เริ่มต้นว่างเปล่า ไม่เปลี่ยนรูป ตั้งค่า .

การเริ่มต้นของแผนที่ที่ไม่เปลี่ยนรูปแบบ:

Map immutableEmptyMap =Map.of(); 

ในข้างต้น เราได้เริ่มต้นว่างเปล่า ไม่เปลี่ยนรูป แผนที่ .

ตัวอย่าง

<ก่อน> นำเข้า java.util.ArrayList; นำเข้า java.util.Collections; นำเข้า java.util.List; นำเข้า java.util.Map; นำเข้า java.util.Set; คลาสสาธารณะ ImmutableCollectionTest { โมฆะคงสาธารณะหลัก (สตริง args [ ]) { List list8 =new ArrayList(); list8.add("อินเดีย"); list8.add("ออสเตรเลีย"); list8.add("อังกฤษ"); list8.add("นิวซีแลนด์"); รายการ immutableList8 =Collections.unmodifiableList (รายการ8) immutableList8.forEach(System.out::println); System.out.println(); List immutableList =List.of ("อินเดีย", "ออสเตรเลีย", "อังกฤษ", "นิวซีแลนด์"); immutableList.forEach(System.out::println); System.out.println(); Set immutableSet =Set.of ("อินเดีย", "ออสเตรเลีย", "อังกฤษ", "นิวซีแลนด์"); ไม่เปลี่ยนรูปSet.forEach(System.out::println); System.out.println(); Map immutableMap =Map.of ("อินเดีย", "อินเดีย", "ออสเตรเลีย", "ออสเตรเลีย", "อังกฤษ", "อังกฤษ", "นิวซีแลนด์", "นิวซีแลนด์"); immutableMap.forEach((คีย์, ค่า) -> System.out.println(คีย์ + " :" + ค่า)); System.out.println(); }}

ผลลัพธ์

INDIAAUSTRALIAENGLANDNEWZEALANDINDIAAUSTRALIAENGLANDNEWZEALANDAUSTRALIAENGLANDNEWZEALANDINDIAAUSTRALIA :AustraliaENGLAND :EnglandNEWZEALAND :NewzealandINDIA :อินเดีย