ดูเหมือนว่าจะสายเล็กน้อย แต่ที่นี่เป็นสองเซ็นต์ของฉัน เราไม่สามารถมีList<int>ฐานะเป็นชนิดดั้งเดิมเพื่อให้เราสามารถมีเพียงintList<Integer>
Java 8 (int array)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList()); 
Java 8 และต่ำกว่า (จำนวนเต็ม)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 =  Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
ต้องการ ArrayList และไม่ใช่ List ใช่หรือไม่
ในกรณีที่เราต้องการใช้งานเฉพาะของListเช่นArrayListนั้นเราสามารถใช้toCollectionเป็น:
ArrayList<Integer> list24 = Arrays.stream(integers)
                          .collect(Collectors.toCollection(ArrayList::new));
ทำไมlist21ไม่สามารถแก้ไขโครงสร้าง
เมื่อเราใช้Arrays.asListขนาดของรายการกลับได้รับการแก้ไขเพราะรายชื่อที่ส่งกลับมาไม่ได้แต่ระดับคงที่ส่วนตัวที่กำหนดไว้ภายในjava.util.ArrayList java.util.Arraysดังนั้นหากเราเพิ่มหรือลบองค์ประกอบออกจากรายการที่ส่งคืนแล้วUnsupportedOperationExceptionจะถูกโยนทิ้ง ดังนั้นเราควรไปด้วยlist22เมื่อเราต้องการแก้ไขรายการ ถ้าเรามี Java8 list23แล้วเรายังสามารถไปกับ
เพื่อความชัดเจนlist21สามารถแก้ไขได้ในแง่ที่เราสามารถเรียกได้list21.set(index,element)แต่รายการนี้อาจไม่ได้รับการปรับเปลี่ยนโครงสร้างเช่นไม่สามารถเพิ่มหรือลบองค์ประกอบออกจากรายการ คุณสามารถตรวจสอบคำถามนี้ได้
ถ้าเราต้องการรายชื่อที่ไม่เปลี่ยนรูปเราก็สามารถสรุปเป็น:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
อีกประเด็นที่ควรทราบก็คือวิธีนี้Collections.unmodifiableListจะคืนค่ามุมมองที่ไม่สามารถเปลี่ยนแปลงได้ของรายการที่ระบุ คอลเล็กชันมุมมอง unmodifiable คือคอลเล็กชันที่ไม่สามารถแก้ไขได้และเป็นมุมมองไปยังคอลเล็กชันสำรอง โปรดทราบว่าการเปลี่ยนแปลงในคอลเลกชันสำรองอาจยังคงเป็นไปได้และหากเกิดขึ้นพวกเขาจะสามารถมองเห็นได้ผ่านมุมมองที่ไม่สามารถแก้ไขได้
เราสามารถมีรายชื่อไม่เปลี่ยนแปลงอย่างแท้จริงใน Java 9 และ 10
รายการไม่น่าเชื่อถืออย่างแท้จริง
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (รายการไม่น่าเชื่อถือที่แท้จริง) ในสองวิธี:
- List.copyOf(Arrays.asList(integers))
- Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
ตรวจสอบคำตอบของฉันนี้เพิ่มเติม
               
              
Arrays.asList(new int[] { 1, 2, 3 }); แน่นอนไม่ได้รวบรวมในชวา 1.4.2 เพราะint[]เป็นไม่Object[]