DUVIDAS 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…!

Então, dentro do método mostrarLista você utilizou um System.out.println que nesse caso imprime o toString do objeto, o conselho é que você sobrescreva toString dessa forma:

public String toString() {
      return "DadosPessoais - Nome: " + nome + " - Telefone: " + telefone;
}

Ob.: muda o telefone para String.

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???

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]