Como instanciar objetos dinamicamente com o arrayList?

Olá pessoal

como faço para instanciar objetos dinamicamente com o arrayList?


public class agenda {

private String Nome;
private String Endereco;
private String Telefone;
private String Email;

meu codigo esta assim:


  public static void main(String args[]){
   ArrayList<agenda> Registro  = new ArrayList<agenda>();
   agenda  S = new agenda();
   S.Nome = "Jose";
   S.Endereco ="Rua ";
   S.Telefone = "555-784157";
   S.Email ="@j.silvestre";
   Registro.add(S)

eu quero fazer da seguinte maneira , prencher um jTextField , com nome, endereço telefone e email e instancia-los dinamicamente quando pressionar o botão ok e guarda-los no arrayList.

seria mais ou menos assim:


S.nome = set_nome(jTextField1.getText());
S.endereco= set_endereco(jTextField2.getText());
...
...
  

sds

j.silvestre

Antes de usar ArrayList ou Swing… estude Orientacao a Objetos e Java puro…

Depois vc passa a aprender algumas APIs java como o Collections (que o ArrayList faz parte)

E depois Swing…

Garcia

valew pela dica…

mas se alguém quiser postar um exemplo ai … pode sentir-se a vontade… Sou programador C, e agora estou estudando Java, e fiquei impressionado com o arrayList, e o fórum encurta o tempo de aprendizado, pelo menos até agora. mas eu tive uma boa impressão dos participantes deste fórum.a propósito estou com livro “Pense Java”.

sds

j.silvestre

Se você é programador C, já deve ter ouvido falar das funções malloc e calloc, não?
Pois então, em java, o operador new (similar ao new, disponível em c++) é o responsável pela alocação dinâmica de memória.
Portanto, cuidado pra não confundir as coisas.

Alocação de memória é uma coisa. O uso de ArrayList (uma coleção disponível no java, que fornece alocação sequencial, baseada em um vetor simples, semelhante a Vector, disponível em c++) é outra coisa.

Olá j.silvestre… falei isso pra vc… pq ficou claro que vc está passando o carro na frente dos bois… ehhe

No array list… vc nao se preocupa com a alocacao… veja o exemplo:

Aluno aluno1 = new Aluno(); //criei um aluno.. a memoria foi alocada pra ele
aluno1.setNome("Joao");

Aluno aluno2 = new Aluno(); //criei outro aluno.. a memoria foi alocada
aluno2.setNome("Maria");

ArrayList list = new ArrayList(); //aloquei memoria para o ArrayList.. ele armazena um array internamente.. mas isso vc nao precisa se preocupar
list.add(aluno1); //coloca o aluno1 no array interno
list.add(aluno2);//coloca o aluno2 no array interno.. se por um acasso nao couber no array interno.. é alocado um novo array maior.. os objetos sao migrados para o novo array.. e a vida continua.. mas vc nao se procupa com isso...

Rod

O que é o arraylist em C ou C++ ???

é uma lista encadeada… só isso…
não quero criar polemica… só queria saber como instanciar objetos dinamicamente usando o arraylist . só isso…

sds

j.silvestre

Na verdade… nao querendo adicionar a polemica… mas já adicionando…

no C ou C++ ArrayList nao seria uma lista encadeada… :-o

no C ou C++ o Arraylist seria um array normal… se o array fica cheio… é criado outro array maior e migra os dados… só que isso fica encapsulado numa classe… no C++ deve ter uma classe assim…

Garcia

isso vai ser uma discussão sem fim deixa pra lá… voltando ao foco que é java, o seguinte:

na verdade queria saber se da pra fazer da seguinte forma:

String  x = "aluno1"; // string "aluno1"  vindo de qualquer lugar 
 Aluno x = new Aluno(); //criei um aluno.. a memoria foi alocada pra ele  
 x.setNome("Joao");  

 ArrayList list = new ArrayList(); //aloquei memoria para o ArrayList.. ele armazena um array internamente.. mas isso vc nao precisa se preocupar  
 list.add(x); //coloca o aluno1 no array interno  

valews…

j.silvestre

[quote=j.silvestre]Rod

O que é o arraylist em C ou C++ ???

é uma lista encadeada… só isso…
não quero criar polemica… só queria saber como instanciar objetos dinamicamente usando o arraylist . só isso…

sds

j.silvestre[/quote]

Em c++, um equivalente ao ArrayList do java seria a classe Vector. Aliás, talvez a palavra “equivalente” seja muito forte neste caso. Eu digo equivalente no sentido de que você pode adicionar elementos à coleção sem se preocupar com a alocação de memória. Como o ArrayList do Java, o Vector de C++ “cresce dinamicamente” à medida que isso se faz necessário.

Boa noite silvestre pegando o seu código de exemplo poderia sugerir o seguinte não sei se é realmente o que voce deseja mas poderia ser algo do genero, crie um construtor da classe agenda que recebe as informacoes deste forma voce poderia fazer desta forma para simplificar:

public static void main(String args[]){  
ArrayList<Agenda> registroAgenda  = new ArrayList<Agenda>();  
registroAgenda.add(new Agenda(s.Nome,s.Endereco,s.Telefone,s.Email, etc.....));

por exemplo para resgatar os dados voce deve usar o:

Agenda manuseandoRegistroAgenda;
manuseandoRegistroAgenda = registroAgenda.get(posicao que deseja); //Aqui ele retorna um objeto do tipo Agenda para que voce possa mostrar, modificar etc...
manuseandoRegistroAgenda.setNome("Marcio");
.
.
.

Somente mais um detalhe observe que dentro dos padrões java a classe inicia com maiusculas e as instancias da classe com minusculas, ou seja:

agenda S=new agenda() // esta fora dos padroes  

devendo ficar desta forma:

Agenda agenda=new Agenda(); // modelo correto de nomeação dos recursos, isso não traz diferença para o compilador apenas para as pessoas que irão visualizar seu código fonte

Espero ter ajudado.

Esta correto. Criando um construtor resolvemos isto, mas os atributos sao privados ?