DÚVIDAS LinkedList

pessoal, estou com muita dúvida ao implementar uma agenda telefonica(nome e elefone) em um LinkedList…
por exemplo segue meu codigo…

[code]import javax.swing.;
import java.util.
;

class DadosPessoais{
private String nome;
private int telefone;

public DadosPessoais(){
    this.nome = "";
    this.telefone = 0; 
}

public DadosPessoais(String texto, int num){
    this.nome = texto;
    this.telefone = num; 
}
    
public DadosPessoais(String texto){
    this.nome = texto;
}

public DadosPessoais(int num){
    this.telefone = num;
}

public void entraNome(String texto){
    this.nome = texto;
}

public void entreTelefone(int tel){
    this.telefone = tel;
}

public String mostraNome(){
    return this.nome;
}

public int mostraTelefone(){
    return this.telefone;
}

}

public class ListaAgenda{
private LinkedList lista = new LinkedList();

public void recebePessoa(DadosPessoais p){
    this.lista.add(p);
}

public void mostraLista(){
    System.out.println(this.lista);
}
            
public static void main(String arg[]){
    DadosPessoais pessoa = new DadosPessoais("Felipe", 1313);
    ListaAgenda agenda = new ListaAgenda();
    
    agenda.recebePessoa(pessoa);
    
    agenda.mostraLista();
    
}

}[/code]

até ai tudo bem , na compilacao num da nenhum erro…
mas quando executa,
VEJAM SÒ O RESULTADO:
run-single:
[DadosPessoais@19821f]
CONSTRUÍDO COM SUCESSO (tempo total: 5 segundos)

POR FAVOR ME AJUDEM…!

Ola, segue as alteracoes.


private LinkedList<DadosPessoais> lista = new LinkedList<DadosPessoais>();

public void mostraLista() {

  for (DadosPessoais p : lista) {
    System.out.println(lista.mostraNome());
  }

}

Implementa um método toString():

[code]class DadosPessoais{
private String nome;
private int telefone;

public DadosPessoais(){
    this.nome = "";
    this.telefone = 0; 
}

public String toString() {
	return "Nome: " + this.nome + ", Telefone: " + this.telefone;
}

…[/code]

para saber o que é para imprimir, senão por padrão é impresso o nome da classe do objeto e o endereço dele.

Ok?

vejam só este codigo:

[code]
import java.util.;
import javax.swing.
;

public class ListaDadosPessoais{
public static void main(String arg[]){
LinkedList lista = new LinkedList();

    lista.add(new Integer(10));
    lista.add(new Integer(20));
    lista.add(new Integer(30));
    lista.add(new Integer(40));
    lista.add(new Integer(50));
    lista.add(new Integer(60));
    lista.add(new Integer(70));
    lista.add(new Integer(80));
    lista.add(new Integer(90));
    lista.add(new Integer(100));
    lista.add(new Integer(110));
    lista.add(new Integer(120));
    
    System.out.println(lista.size());  //imprime 12
    
    for(int i=0; i<lista.size(); i++){
        System.out.println(lista.remove());
    }
}

}[/code]

este codigo só imprime metade da lista, se for 6 elementos imprime 3, se for 20 imprime 10…
Alguem pode me dizer pq isso acontece???>

É pq quando você remove da lista, atualiza o tamanho dela.
Tem que percorrer a lista ao contrário para isso não acontecer!

[quote=dionat4n]É pq quando você remove da lista, atualiza o tamanho dela.
Tem que percorrer a lista ao contrário para isso não acontecer![/quote]

vlws…!

aqui… eu fiz desse jeito mas está imprimindo sempre o ultimo elemento…

[code]
public class ListaDadosPessoais{
private LinkedList lista = new LinkedList();

public void insereLista(DadosPessoais p){
    lista.add(p);
}

public void mostraLista(int i){
    System.out.println("Nome: " +lista.get(i).mostraNome());
    System.out.println("Telefone: " +lista.get(i).mostraTelefone());
}

public static void main(String arg[]){
    DadosPessoais pessoa = new DadosPessoais();
    ListaDadosPessoais dados = new ListaDadosPessoais();        
    int i=0;
    
    pessoa.recebeNome("ab");
    pessoa.recebeTelefone(12);
    dados.insereLista(pessoa);
    
    pessoa.recebeNome("bc");
    pessoa.recebeTelefone(45);
    dados.insereLista(pessoa);
    
    pessoa.recebeNome("fg");
    pessoa.recebeTelefone(78);
    dados.insereLista(pessoa);
    
    pessoa.recebeNome("de");
    pessoa.recebeTelefone(848);
    dados.insereLista(pessoa);
    
    pessoa.recebeNome("gfgf");
    pessoa.recebeTelefone(5456);
    dados.insereLista(pessoa);
    
    pessoa.recebeNome("hgjg");
    pessoa.recebeTelefone(42151);
    dados.insereLista(pessoa);
    
    System.out.println(dados.lista.size()); //aqui imprime 6
    
    
    while(i<dados.lista.size()){ //neste laço imprime os 6 elemento
        dados.mostraLista(i);     //porem é o ultimo 6vezes!
        i++;
    }
   
    
}

}[/code]>

Tem que criar novos objetos a cada vez que for adicionados novas pessoas e novos dados:

         DadosPessoais pessoa = new DadosPessoais();  
         ListaDadosPessoais dados = new ListaDadosPessoais();          
         int i=0;  
           
         pessoa.recebeNome("ab");  
         pessoa.recebeTelefone(12);  
         dados.insereLista(pessoa);  
         
         pessoa = new DadosPessoais();      //cria uma nova pessoa
         dados = new ListaDadosPessoais(); //cria um novo dado

         pessoa.recebeNome("bc");  
         pessoa.recebeTelefone(45);  
         dados.insereLista(pessoa); 

Senão tu sempre vai referenciar a mesma Pessoa com os mesmos Dados dela.

:wink:

[quote=dionat4n]
Tem que criar novos objetos a cada vez que for adicionados novas pessoas e novos dados:

         DadosPessoais pessoa = new DadosPessoais();  
         ListaDadosPessoais dados = new ListaDadosPessoais();          
         int i=0;  
           
         pessoa.recebeNome("ab");  
         pessoa.recebeTelefone(12);  
         dados.insereLista(pessoa);  
         
         pessoa = new DadosPessoais();      //cria uma nova pessoa
         dados = new ListaDadosPessoais(); //cria um novo dado

         pessoa.recebeNome("bc");  
         pessoa.recebeTelefone(45);  
         dados.insereLista(pessoa); 

Senão tu sempre vai referenciar a mesma Pessoa com os mesmos Dados dela.

:wink: [/quote]

vlws brother…

[quote=FelipeGeorge13][quote=dionat4n]
Tem que criar novos objetos a cada vez que for adicionados novas pessoas e novos dados:

         DadosPessoais pessoa = new DadosPessoais();  
         ListaDadosPessoais dados = new ListaDadosPessoais();          
         int i=0;  
           
         pessoa.recebeNome("ab");  
         pessoa.recebeTelefone(12);  
         dados.insereLista(pessoa);  
         
         pessoa = new DadosPessoais();      //cria uma nova pessoa
         dados = new ListaDadosPessoais(); //cria um novo dado

         pessoa.recebeNome("bc");  
         pessoa.recebeTelefone(45);  
         dados.insereLista(pessoa); 

Senão tu sempre vai referenciar a mesma Pessoa com os mesmos Dados dela.

:wink: [/quote]

vlws brother…[/quote]

Me deve um lanche! haeuhaeue