หากคุณกำลังใช้ Java-8 นอกจากนี้ยังมีวิธีอื่นในการทำเช่นนี้
int[] arr = list.stream().mapToInt(i -> i).toArray();
มันคืออะไร:
- ได้รับ
Stream<Integer>
จากรายการ
- ได้รับ
IntStream
โดยการแมปองค์ประกอบแต่ละตัวเอง (ฟังก์ชั่นเอกลักษณ์), การแกะกล่องint
ค่าไว้โดยInteger
วัตถุแต่ละชิ้น (ทำโดยอัตโนมัติตั้งแต่ Java 5)
- รับอาร์เรย์
int
โดยการโทรtoArray
คุณสามารถโทรหาอย่างชัดเจนintValue
ผ่านการอ้างอิงวิธีการเช่น:
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
เป็นมูลค่าการกล่าวขวัญว่าคุณจะได้รับNullPointerException
ถ้าคุณมีnull
การอ้างอิงใด ๆในรายการ สิ่งนี้สามารถหลีกเลี่ยงได้อย่างง่ายดายโดยการเพิ่มเงื่อนไขการกรองไปยังไปป์ไลน์เช่นนี้:
//.filter(Objects::nonNull) also works
int[] arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray();
ตัวอย่าง:
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int[] arr = list.stream().mapToInt(i -> i).toArray(); //[1, 2, 3, 4]
list.set(1, null); //[1, null, 3, 4]
arr = list.stream().filter(i -> i != null).mapToInt(i -> i).toArray(); //[1, 3, 4]