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.
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”.
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...
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…
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
é 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