Conversão entre array e lista
Você deve saber como converter um array em um ArrayList. Vamos começar transformando um ArrayList em um array:
3: List list = new ArrayList<>();
4: list.add("hawk");
5: list.add("robin");
6: Object[] objectArray = list.toArray();
7: System.out.println(objectArray.length); // 2
8: String[] stringArray = list.toArray(new String[0]);
9: System.out.println(stringArray.length); // 2
A linha 6 mostra que um ArrayList que se converteu em um array. O único problema é que o padrão é uma matriz de classe Object. Isso geralmente não é o que queremos. A Linha 8 especifica o tipo da matriz e faz o que realmente queremos. A vantagem de especificar um tamanho de 0 para o parâmetro é que o Java irá criar uma nova matriz do tamanho adequado para o valor de retorno. Se desejar, você pode sugerir uma matriz maior para ser usada. Se o ArrayList cabe nesse array, ele será retornado. Caso contrário, um novo será criado.
Converter de uma matriz para uma List é mais interessante. O array original cria uma Lista suportada por matriz está vinculada. Quando uma mudança é feita em um, está disponível para o outro. isto é uma lista de tamanho fixo e também é conhecida como uma lista backed porque a matriz é alterada com ela. Prestar atenção cuidadosa aos valores aqui:
20: String[] array = { "hawk", "robin" }; // [hawk, robin]
21: List list = Arrays.asList(array); // returns fixed size list
22: System.out.println(list.size()); // 2
23: list.set(1, "test"); // [hawk, test]
24: array[0] = "new"; // [new, test]
25: for (String b : array) System.out.print(b + " "); // new test
26: list.remove(1); // throws UnsupportedOperation Exception
A linha 21 converte a matriz em uma lista . Note que não é o java.util.ArrayList como estamos acostumados. É a versão de uma lista apoiada em tamanho fixo . A linha 23 está bem porque set () apenas substitui um valor existente. Atualiza tanto o array quanto a lista, porque eles apontam para o mesmo armazenamento de dados. A linha 24 também altera a matriz e a lista . A linha 25 mostra que o array mudou para novo teste . A linha 26 lança uma exceção porque não podemos alterar o tamanho da lista.
Um truque legal com Varargs
Este tópico não está no exame, mas mesclar varargs com a conversão ArrayList é permitido para criar um ArrayList de uma forma legal:
List list = Arrays.asList("one", "two");
asList () pega varargs, que permitem passar em um array ou simplesmente digitar os valores de String .
Isso é útil ao testar, pois é possível criar e preencher facilmente uma lista em uma linha.