Uma pequena duvida teórica :x

9 respostas
J

Não sei se aqui é o lugar certo…mas a minha duvida é…é possivel criar um array de alocação de espaço dinâmica no java?

Pesquisei no google e afins, mas não entendi da forma que estava exposta…se alguem puder me exclarecer essa duvida fico grato :slight_smile:

9 Respostas

Diabo_Loiro

não. o que voce pode usar é uma classe de tem esse efeito, ArrayList por exemplo.

E

Josielplens:
Não sei se aqui é o lugar certo…mas a minha duvida é…é possivel criar um array de alocação de espaço dinâmica no java?

Pesquisei no google e afins, mas não entendi da forma que estava exposta…se alguem puder me exclarecer essa duvida fico grato :)

Arrays são sempre alocados dinamicamente com “new”, mas o tamanho deles é fixo depois que são criados. Não há um comando “redim” como há no VB, por exemplo.
Para ter um array de tamanho variável, você precisa encapsulá-lo em uma classe.
A classe ArrayList já faz isso para você.

J

Josielplens:
Não sei se aqui é o lugar certo…mas a minha duvida é…é possivel criar um array de alocação de espaço dinâmica no java?

Pesquisei no google e afins, mas não entendi da forma que estava exposta…se alguem puder me exclarecer essa duvida fico grato :)

Claro que dá. O Operador new serve para alocar memória dinamicamente. O resto é com sua lógica e algoritmos. Como citado acima a ArrayList já é a implementação desse algoritmo.

int i = 1; int[] arr = new int[i]; arr = new int[++i]; arr = new int[++i];

ViniGodoy

Movido para java básico.
Outra coisa, procure dar um título descritivo para o tópico como “É possível criar arrays dinâmicos em Java?”

Diabo_Loiro

a pergunta dele é alocar dinamicamente como no C com malloc etc., dando o efeito de um array infinito que aumenta de tamanho conforme a nescessidade.

em java não temos essa liberdade de alocar a memoria dinamicamente desta maneira de uma olhada na implementação da classe arraylist , ela cria um novo array e copia o conteudo do antigo, dando o mesmo efeito de que objeto aumenta de tamanho, se não me engano tem um exemplo bem simples na apostila da caelum de estrutura de dados.

ViniGodoy

Como não? Você pode alocar classes dinamicamente com new, que faz exatamente o que o malloc (ou o new do C++) faz.
Essa liberdade nós temos sim.

Se quiser fazer uma lista encadeada em Java, é bem fácil.

Diabo_Loiro

sim o new cria os objetos na memoria, mais o que quis dizer é que não podemos manipular a memoria diretamente

Josielplens:
alocação de espaço dinâmica
como em c que tem que fazer na hora de alocar a memoria sizeof(int) que tem que calcular o tamanho.

acho que entendi o sentido da pergunta errado e acabei saindo o escopo da pergunta dele.

josenaldo

O que o garoto está perguntando é:

É possível criar um array e depois aumentar esse array? Não é criar um novo objeto array e atribuir a variavel de referencia a esse novo objeto, mas sim aumentar o tamanho do objeto já existente a apontado por essa variável.

Não, não é possível;

Mesmo arraylist, quanto o tamanho do array chega ao máximo, cria um novo objeto, copia todos os elementos do array antigo para o novo e atribui o array novo à referencia que referenciava o array antigo.

Diabo_Loiro

é ficou mais claro, era isso que eu queria dizer.

Criado 28 de outubro de 2010
Ultima resposta 30 de out. de 2010
Respostas 9
Participantes 6