ArrayList, mta DUVIDA, AJUDA

11 respostas
brenojava123

Galera assim, eu tenho que fazer um sisteminha simples vou dar uma explicada:

1-Tenho uma classe Alunos(que tem nome, e idade)

public class Aluno { private String nome private String idade; }

2-Eu tenhu uma outra classe com o MAIN so que assim eu preciso adicionar 5 novos alunos masss sem fazer assim

Aluno a1 = new Aluno();

Aluno a2 = new Aluno();

não pode ser assim, eu tenho que adicionar como se fosse um for tipo:

for(int i = 0; i<5; i++){ Aluno a1 = new Aluno(); a1.setNome(scanner.nextLine());//ja importei o scanner tudo certinho a1.setIdade(scanenr.nextInt()); }

mass… toda vez que o laço acontecer novamente ele vai sobreescrever o a1 e nao é isso que eu queria, eu queria que ele criasse um outro objeto independente e eu pudesse adicionar o Nome e a Idade… tem como ?

11 Respostas

A

É impressão minha, ou este outro tópico seu já fala sobre a mesma coisa?

otaviojava

Você pode criar um construtor na sua classe assim

public class Aluno {  
    private String nome  
    private String idade;  
public Aluno(String nome,String idade){
this.nome=nome;
this.idade=idade;
}
//get e set
}

Depois vc cria seu objeto no construtor passando esses dois parâmetros.

yoshikichi

//fora do for List<Aluno> lista = new ArrayList<Aluno>(); //seu for for(...){ //seu código list.add(a1); }

ViniGodoy

Veja um exemplo: http://www.guj.com.br/java/74068-usando-list-#389435

gRoOve

Acho que o que o brenojava123 está tentando fazer é criar um array de referências para o objeto de forma dinâmica, ou seja:

for(int i = 0; i<5; i++){  
    Aluno [b]a1[/b] = new Aluno();
    Aluno [b]a2[/b] = new Aluno();
}

De forma que se consiga gerar as varáveis de referência com nomes diferentes, tenho dúvidas quanto a isso tb :slight_smile:
Não é possível dar bold no código, tem como destacar de outra forma?

carlos.e.a

Oxe pra que ele precisa de “nomes de referencias bonitinhos?”
Usa um arrayList como jah falaram e tah resolvido…quando quiser acessar as referencias pede pro array colocando o numero da referencia do objeto.

Rafael_Mesquita_Mour

Tem sim amigo, eu estava com a mesma dúvida que você, pois a aplicação que eu estou fazendo tinha basicamente a mesma necessidade, ou seja, criar objetos dinamicamente.

Faça o seguinte:

// Declare e inicialize um ArrayList de Objetos Aluno
ArrayList<Aluno> alunos = new ArrayList<Aluno>();

// Aqui é o seu laço FOR normalmente
for (int i = 0; i <= 5; i++) {

	// Seu Objeto aluno sendo criado
	Aluno a1 = new Aluno();

	// Aluno recebendo o nome;
	a1.setName(Scanner.nextLine());

	// Aluno recebendo a idade
	a1.setIdade(Scanner.nextInt());

	// Aqui é a parte importante, insira esse objeto aluno na ArrayList
	alunos.add(a1);

	// E depois retire a referência da variável a1, deixando-a como null,
	// ou seja, ela não estará referenciando a nenhum objeto Aluno,
	// assim você poderá inserir um outro objeto Aluno a ela
	a1 = null;

//Fim do laço FOR
}

// Depois se você quiser saber o que há dentro da ArrayList, você terá
// que fazer um outro laço FOR, ex:
for (Aluno a : alunos) {

        //Aqui você estará imprimindo, o nome e a idade de cada objeto Aluno, 
        //ou seja de cada objeto Aluno que você tiver na ArrayList alunos
	System.out.println("O aluno " + a.getName() + " têm "+ a.getIdade() + " anos");

//Fim do laço FOR
}

Espero ter ajudado ^^

[]´s

ViniGodoy

O código da linha 23 é unútil, Rafael. Se vc deixar sem ele, quando a variável a1 sair de escopo ou for reinicializada, outro objeto ocupar seu lugar, tenha vc setado para null ou não.

Rafael_Mesquita_Mour

Maravilha… mas ViniGodoy, se ele retirar a linha 23 desse código, o mesmo como um todo irá ajudá-lo com o que ele precisa certo?

Retirei essa linha também do meu código aqui e funcionou, provavelmente irá ajudá-lo também!

Valeu @ViniGodoy ;D

ViniGodoy

Sim, ela é inútil, pode retirar sem medo. Ela faz o que o java fará sozinho, caso você a retire.

gRoOve

Deveria setar como null, caso fosse um objeto que desejasse habilitar para o Garbage collector, como o Vini disse, o próprio escopo e/ou uma nova referência faz com que a variável seja destruída da pilha :slight_smile:

Criado 15 de janeiro de 2011
Ultima resposta 19 de jan. de 2011
Respostas 11
Participantes 8