Prefácio:
Este artigo apresenta a comparação das vantagens e desvantagens das três situações de conversão de matrizes em lista em Java, bem como a comparação dos cenários de aplicação e a análise das causas dos erros de conversão de tipo que os programadores costumam fazer.
1. A maneira mais comum (não necessariamente a melhor)
Depois de converter a matriz em lista através Arrays.asList(strArray) , você não pode adicionar ou excluir a lista. Você só pode verificar e modificá -lo, caso contrário, uma exceção será lançada.
Código da chave: List list = Arrays.asList(strArray);
private void testArraycastTolisterRor () {String [] Strarray = new String [2]; Lista List = Arrays.asList (Strarray); // Insira um dados na lista convertida.add ("1"); System.out.println (list); }Resultados da execução:
Exceção no thread "Main" java.lang.unsupportedOperationException
em java.util.abstractList.add (abstractlist.java:148)
em java.util.abstractList.add (abstractlist.java:108)
em com.darwin.junit.calculator.testarraycasttolist (calculator.java:19)
em com.darwin.junit.calculator.main (calculator.java:44)
O programa lança uma exceção no list.add(“1”) . UnsupportEdOperationException.
Análise da razão:
O valor de retorno de Arrays.asList(strArray) é uma classe estática privada java.util.Arrays Classe java.util.Arrays.ArrayList , que não é java.util.ArrayList . java.util.Arrays.ArrayList teve set() , get() , contains() e outros métodos, mas não possui o método de adicionar add() ou remover remove() , portanto, a chamada add() causará um erro.
Cenário de uso: o método Arrays.asList(strArray) só pode ser usado após a conversão de uma matriz em uma lista. Não há necessidade de adicionar ou excluir os valores e ele é usado apenas como fonte de dados para ler.
2. Depois que a matriz é convertida para a lista, ele suporta o método de adicionar, excluir, modificar e pesquisar.
Através do construtor ArrayList, converta o valor de retorno de Arrays.asList(strArray) de java.util.Arrays.ArrayList para java.util.ArrayList .
Código da chave: ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
private void testArraycastTolistRright () {String [] Strarray = new String [2]; ArrayList <String> list = new ArrayList <String> (Arrays.asList (Strarray)); list.add ("1"); System.out.println (list); }Resultado da execução: um elemento "1" foi adicionado com sucesso.
[NULL, NULL, 1]
Cenário de uso: depois de converter a matriz em uma lista, você precisa adicionar, excluir, modificar e verificar a lista. Pode ser usado se a quantidade de dados na lista não for grande.
3. Através do método da classe de ferramentas de coleção.
Converta através Collections.addAll() Collections.addAll(arrayList, strArray) . Este é o método mais eficiente.
Código -chave:
ArrayList <String> ArrayList = new ArrayList <String> (Strarray.Length); Coleções.addall (ArrayList, Strarray);
teste:
private void testArraycastTolisteFient () {String [] Strarray = new String [2]; ArrayList <String> ArrayList = new ArrayList <String> (Strarray.length); Coleções.addall (Arraylist, Strarray); ArrayList.add ("1"); System.out.println (ArrayList); }Resultado da execução: também anexou com sucesso um elemento "1".
[NULL, NULL, 1]
Cenário de uso: depois de converter a matriz em uma lista, você precisa adicionar, excluir, modificar e verificar a lista. Quando o volume de dados da lista é enorme, é preferido usá -lo, o que pode melhorar a velocidade de operação.
NOTA: Anexe o código -fonte do método de Collections.addAll() :
public static <t> boolean addall (coleção <? super t> c, t ... elementos) {resultado booleano = false; para (elemento t: elementos) resultado | = c.add (elemento); // resultado e c.add (elemento) bit ou operação, e atribui o valor ao resultado do resultado do retorno; }Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.