DUVIDAS LinkedList

3 respostas
F

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

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();
        
    }
}

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...!

3 Respostas

E

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.

F

vejam só este codigo:

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());
        }
    }
}

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

F

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

public class ListaDadosPessoais{
    private LinkedList<DadosPessoais> lista = new LinkedList<DadosPessoais>();
    
    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++;
        }
       
        
    }
}
Criado 14 de junho de 2008
Ultima resposta 17 de jun. de 2008
Respostas 3
Participantes 2