Como usar toArray() em List?

4 respostas
M

Eu nao sei como eu devo utilizar o metodo toArray() da biblioteca java.util.List para converter os meus dados que sao instancias de String para um array comum.
Eu ja tentei fazer algo do tipo:

String [] o = (String[]) minhaLista.toArray();

Porem, a minha IDE diz que nao e possivel converter de Object[] para String[]. O que eu estou fazendo de errado?

4 Respostas

L

Marcio,

Tente isso:

String[] o = (String[])minhaLista.toArray(new String[0]);
T

Você não está fazendo nada de errado. Mas é um pouco melhor fazer:

String [] o = (String[]) minhaLista.toArray(new String[0]);

Veja se a sua IDE não pára de reclamar agora.

M

“thingol”:
Você não está fazendo nada de errado. Mas é um pouco melhor fazer:

String [] o = (String[]) minhaLista.toArray(new String[0]);

Veja se a sua IDE não pára de reclamar agora.

Por que o " new String[0] " ??

T

Isso é um truque do método toArray. Se você não passar nada, ele aloca um Object[], copia os valores, e o cast é que vai transformar um Object[] em um String[] - isso é uma operação lenta.

Se você passar new String[0] (ou seja, um array vazio), ele vai obter o tipo do array a partir do parâmetro, e por reflection ele vai alocar um String[] diretamente, o que é um pouco mais rápido.

O melhor é que passasse um parâmetro como String.class em vez de new String[0], mas como essa API é um pouco antiga (JDK 1.2), é assim que é feito.

Criado 13 de outubro de 2004
Ultima resposta 13 de out. de 2004
Respostas 4
Participantes 3