sei que para criar uma array em java usa-se
int [] meuArray = int[10] // cria um array do tipo inteiro com dez posições
mas como aumentar o tamanho desse array depois ?
como fazer esse array ficar dinamico sem usar a classe ArrayList
???
sei que para criar uma array em java usa-se
int [] meuArray = int[10] // cria um array do tipo inteiro com dez posições
mas como aumentar o tamanho desse array depois ?
como fazer esse array ficar dinamico sem usar a classe ArrayList
???
até onde eu sei não tem como, o que se pode fazer é criar um array maior e migrar os dados. O que é um exercício comum na faculdade.
[quote=paulo.rogeriobr]sei que para criar uma array em java usa-se
int [] meuArray = int[10] // cria um array do tipo inteiro com dez posições
mas como aumentar o tamanho desse array depois ?
como fazer esse array ficar dinamico sem usar a classe ArrayList
???
[/quote]
Na verdade, é assim:
int[] meuArray = new int[10];
E como o digaoneves comentou, não existe essa possibilidade. Se procurar aqui no GUJ mesmo, vai encontrar boas (ao menos uma) implementações desse tipo de necessidade, sem usar nada da Collection. Uma dica é ter um vetor auxiliar para ir modificando o tamanho de acordo com o necessário, mas como já foi citado, isso envolve a migração de dados de um para o outro .
Mas vou ter que cria dois array toda hora que eu inserir um novo elemento?
uma instancia e com por exemplo 10 posições e um novo array?
[quote=nel][quote=paulo.rogeriobr]sei que para criar uma array em java usa-se
int [] meuArray = int[10] // cria um array do tipo inteiro com dez posições
mas como aumentar o tamanho desse array depois ?
como fazer esse array ficar dinamico sem usar a classe ArrayList
???
[/quote]
Na verdade, é assim:
int[] meuArray = new int[10];
E como o digaoneves comentou, não existe essa possibilidade. Se procurar aqui no GUJ mesmo, vai encontrar boas (ao menos uma) implementações desse tipo de necessidade, sem usar nada da Collection. Uma dica é ter um vetor auxiliar para ir modificando o tamanho de acordo com o necessário, mas como já foi citado, isso envolve a migração de dados de um para o outro .[/quote]
Sei que é assim que instancia o array com as posições desejada
Então nao tem jeito sem usar migração de dados e sem Collection ?
public static int[] redim (int[] original, int tamanhoNovo) {
int[] novoArray = new int[tamanhoNovo];
System.arraycopy (original, 0, novoArray, 0, Math.min (original.length, novoArray.length));
return novoArray;
}
....
int[] meuArray = new int[20];
...
meuArray = redim (meuArray, 40);
...
Não. Mas vou te fazer uma pergunta, como você acha que a classe ArrayList faz isso “por baixo dos panos”? 8)
Oi,
O que você pode fazer é instanciar ele novamente com o novo tamanho (salvando a referencia anterior). Ou então usar um array de Objeto Integer[999] e depois de usa-lo remover as posições nulas dentro dele. Ou então fazer como o entanglement disse no post acima.
Baita de um trambique. :twisted:
Tchauzin!
[quote=entanglement]
public static int[] redim (int[] original, int tamanhoNovo) {
int[] novoArray = new int[tamanhoNovo];
System.arraycopy (original, 0, novoArray, 0, Math.min (original.length, novoArray.length));
return novoArray;
}
....
int[] meuArray = new int[20];
...
meuArray = redim (meuArray, 40);
...
[/quote]
Ok ! obrigado ! Resolvido!!
OBrigado Pessoal ! já entendi ! com o exemplo citado !
Valeu ! muito obrigado :lol:
A classe ArrayList contém um array de Object e um int que contém a quantidade atual de dados. Um ArrayList costuma sempre ter algumas posições vazias. Quando esse array interno fica sem espaço, ele é redimensionado mais ou menos como o código do método “redim” que escrevi acima, mas o tamanho novo é sempre algumas posições a mais, não só uma.