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)
以上语句在输入数组上添加了包装器。因此,像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类的具体实例并将列表作为参数传递。
在这种情况下,add和remove方法将正常工作,因为两个方法都来自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");
list1.remove("Avinash");
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");
namesList.remove("Avinash");
Lists.newArrayList(ia)
可以创建一个独立的副本,就像第一个选项一样。它只是更通用和更好看。 - qben