String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> namesList = Arrays.asList(names);
หรือ
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> temp = Arrays.asList(names);
คำสั่งด้านบนจะเพิ่ม wrapper บนอาร์เรย์อินพุต ดังนั้นวิธีการเช่น add & remove จะไม่สามารถใช้ได้กับวัตถุอ้างอิงรายการ 'namesList'
หากคุณพยายามเพิ่มองค์ประกอบในอาร์เรย์ / รายการที่มีอยู่คุณจะได้รับ "Exception in thread" main "java.lang.UnsupportedOperationException"
การดำเนินการข้างต้นเป็นแบบอ่านอย่างเดียวหรือดูอย่างเดียว
เราไม่สามารถดำเนินการเพิ่มหรือลบในรายการวัตถุได้ แต่
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.ArrayList<String> list1 = new ArrayList<>(Arrays.asList(names));
หรือ
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> listObject = Arrays.asList(names);
java.util.ArrayList<String> list1 = new ArrayList<>(listObject);
ในข้อความข้างต้นคุณได้สร้างตัวอย่างที่เป็นรูปธรรมของคลาส ArrayList และส่งผ่านรายการเป็นพารามิเตอร์
ในกรณีนี้วิธีการเพิ่มและลบจะทำงานได้อย่างถูกต้องเนื่องจากทั้งสองวิธีมาจากคลาส ArrayList ดังนั้นที่นี่เราจะไม่ได้รับ UnSupportedOperationException
การเปลี่ยนแปลงในวัตถุ Arraylist (วิธีการเพิ่มหรือลบองค์ประกอบใน / จากรายการอาร์เรย์) จะไม่สะท้อนไปยังวัตถุ java.util.List ดั้งเดิม
String names[] = new String[] {
"Avinash",
"Amol",
"John",
"Peter"
};
java.util.List < String > listObject = Arrays.asList(names);
java.util.ArrayList < String > list1 = new ArrayList < > (listObject);
for (String string: list1) {
System.out.print(" " + string);
}
list1.add("Alex"); //Added without any exception
list1.remove("Avinash"); //Added without any exception will not make any changes in original list in this case temp object.
for (String string: list1) {
System.out.print(" " + string);
}
String existingNames[] = new String[] {
"Avinash",
"Amol",
"John",
"Peter"
};
java.util.List < String > namesList = Arrays.asList(names);
namesList.add("Bob"); // UnsupportedOperationException occur
namesList.remove("Avinash"); //UnsupportedOperationException
Lists.newArrayList(ia)
ทำสำเนาอิสระเช่นเดียวกับตัวเลือกแรก มันเป็นเรื่องทั่วไปและดีกว่าที่จะมอง