Eu quero saber se é seguro / aconselhável converter de ArrayList para Array? Eu tenho um arquivo de texto com cada linha uma string:
1236
1233
4566
4568
....
Eu quero lê-los na lista de array e, em seguida, convertê-lo em Array. É aconselhável / legal fazer isso?
obrigado
Respostas:
Sim , é seguro converter um
ArrayList
em umArray
. Se é uma boa ideia depende do uso pretendido. Você precisa das operações queArrayList
fornece? Em caso afirmativo, mantenha umArrayList
. Senão, converta-se!saídas
fonte
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
Esta é a melhor forma (IMHO).
Este código também funciona:
Mas é menos eficaz: a matriz de string é criada duas vezes: na primeira vez, a matriz de comprimento zero é criada, depois a matriz de tamanho real é criada, preenchida e retornada. Então, se você sabe o tamanho necessário (de
list.size()
), você deve criar um array que seja grande o suficiente para colocar todos os elementos. Nesse caso, ele não é realocado.fonte
new String[0]
enew String[size]
new String[0]
é realmente mais eficiente. shipilev.net/blog/2016/arrays-wisdom-ancientsSe é uma "boa ideia" realmente depende do seu caso de uso.
fonte
Object
presumindo que v é um ArrayList:
fonte
Existem dois estilos para converter uma coleção em uma matriz: usando uma matriz pré-dimensionada (como
c.toArray(new String[c.size()])
) ou usando uma matriz vazia (comoc.toArray(new String[0])
). Em versões anteriores do Java, o uso de um array pré-dimensionado era recomendado, pois a chamada de reflexão necessária para criar um array de tamanho adequado era bastante lenta. No entanto, desde as últimas atualizações do OpenJDK 6, essa chamada foi intrinsecada, tornando o desempenho da versão do array vazio o mesmo e às vezes até melhor, em comparação com a versão pré-dimensionada. Além disso, passar um array pré-dimensionado é perigoso para uma coleção simultânea ou sincronizada, pois uma corrida de dados é possível entre o tamanho e a chamada toArray, o que pode resultar em nulos extras no final do array, se a coleção for encolhida simultaneamente durante a operação. Você pode seguir o estilo do uniforme:usando um array vazio (o que é recomendado no Java moderno) ou usando um array pré-dimensionado (que pode ser mais rápido em versões mais antigas do Java ou JVMs não baseados em HotSpot) .fonte
Este é o uso recomendado para o Java mais recente (> Java 6)
fonte
A interface Collection inclui o método toArray () para converter uma nova coleção em um array. Existem duas formas desse método. A versão sem argumento retornará os elementos da coleção em uma matriz Object: public Object [] toArray (). A matriz retornada não pode ser convertida em nenhum outro tipo de dados. Esta é a versão mais simples. A segunda versão requer que você passe o tipo de dados do array que deseja retornar: public Object [] toArray (Object type []).
para referência, consulte este link http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
fonte
Uma abordagem seria adicionar o segundo for loop onde a impressão está sendo feita dentro do primeiro for loop. Como isso:
fonte
Depende do que você deseja alcançar. Se precisar manipular o array posteriormente, custaria mais esforço do que manter a string no ArrayList. Você também tem acesso aleatório com uma ArrayList por
list.get( index );
fonte