String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> namesList = Arrays.asList(names);
o
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> temp = Arrays.asList(names);
L'istruzione Above aggiunge il wrapper all'array di input. Quindi i metodi come aggiungi e rimuovi non saranno applicabili all'oggetto di riferimento della lista 'namesList'.
Se provi ad aggiungere un elemento nella matrice / elenco esistente, otterrai "Eccezione nel thread" principale "java.lang.UnsupportedOperationException".
L'operazione di cui sopra è di sola lettura o di sola visualizzazione.
Non è possibile eseguire operazioni di aggiunta o rimozione nell'oggetto elenco. Ma
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.ArrayList<String> list1 = new ArrayList<>(Arrays.asList(names));
o
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> listObject = Arrays.asList(names);
java.util.ArrayList<String> list1 = new ArrayList<>(listObject);
Nella dichiarazione precedente hai creato un'istanza concreta di una classe ArrayList e passato un elenco come parametro.
In questo caso, il metodo aggiungi e rimuovi funzionerà correttamente poiché entrambi i metodi provengono dalla classe ArrayList, quindi qui non avremo alcuna UnSupportedOperationException.
Le modifiche apportate all'oggetto Arraylist (metodo di aggiunta o rimozione di un elemento in / da un arraylist) non verranno riflesse nell'oggetto java.util.List originale.
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)
crea una copia indipendente, proprio come la prima opzione. È semplicemente più generale e migliore da guardare.