String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> namesList = Arrays.asList(names);
ou
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> temp = Arrays.asList(names);
A Instrução Acima adiciona o invólucro na matriz de entrada. Portanto, os métodos como adicionar e remover não serão aplicáveis no objeto de referência de lista 'namesList'.
Se você tentar adicionar um elemento na matriz / lista existente, obterá "Exceção no thread" main "java.lang.UnsupportedOperationException".
A operação acima é somente leitura ou visualização.
Não podemos realizar a operação de adicionar ou remover no objeto da lista. Mas
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.ArrayList<String> list1 = new ArrayList<>(Arrays.asList(names));
ou
String names[] = new String[]{"Avinash","Amol","John","Peter"};
java.util.List<String> listObject = Arrays.asList(names);
java.util.ArrayList<String> list1 = new ArrayList<>(listObject);
Na declaração acima, você criou uma instância concreta de uma classe ArrayList e passou uma lista como parâmetro.
Nesse caso, o método add & remove funcionará corretamente, pois ambos os métodos são da classe ArrayList, portanto, não obteremos nenhuma UnSupportedOperationException.
As alterações feitas no objeto Arraylist (método adicionar ou remover um elemento em / de uma arraylist) não serão refletidas no objeto java.util.List original.
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)
faz uma cópia independente, como a primeira opção. É simplesmente mais geral e melhor de se olhar.