Problemas com llista dinâmica duplamente encadeada

Criei as seguintes classes:

public class No {
	public No proximo;
	public No anterior;
	public Object dado;
	
	public No(No proximo,No anterior, Object dado){
		this.proximo = proximo;
		this.dado = dado;
		this.anterior = anterior;
	}
	
	public No(Object dado){
		this.dado = dado;
	}
// +GETS e SETS

e

public class ListaDuplamenteEncadeada {
	public No primeiro;
	public No ultimo;
	public int numDados = 0;
	
	public ListaDuplamenteEncadeada(){
		this.primeiro = null;
		this.ultimo = null;
		this.numDados = 0;
	}
	
	public void adicionarInicio(Object dado){
		No novo = new No(dado);
		if(this.numDados == 0){
			this.primeiro = novo;
			this.ultimo = this.primeiro;
		}else{
		novo.setProximo(this.primeiro);
		this.primeiro.setAnterior(novo);
		this.primeiro = novo;
		}
		this.numDados++;
	}

e em uma terceira classe fiz o teste:

ListaDuplamenteEncadeada lista = new ListaDuplamenteEncadeada;
lista.adicionarInicio(10);
System.out.println(lista.primeiro);

mas ao invés de imprimir o “10”, ele imprime a referência do nó "No @…"
Não faço idéia de qual seria o problema.

@Luan_Mayron, bom dia.

Posta o seu método de impressão, favor !

Pelo que estamos entendo. Você está tentando só imprimir o “objeto” em questão.

@Luan_Mayron faça um método percorrendo toda a sua lista, certo ?

No aux = null;

aux = novo.primeiro;

while(aux!=null){
imprimir(aux.getProx() ou aux.getInicio());
aux=aux.getProx();
}

Isto vai depender da sua lógica, blz ?

Abraço e fica com Deus !

eis o problema do encapsulamento.

vc não reveria export o primeiro. primeiro não é 10. primeiro é um No. que contem um atributo dado.

se vc tentar imprimir lista.primeiro.dado vai ficar claro.

O que vc poderia fazer:

primeiro: bota os atributos privados

segundo: cria um metodo getPrimeiro() Object que vai retornar this.primeiro.getData()

@peczenyj falou tudo!

@Luan_Mayron! Encapsula seus atributos, ok ? Da uma olhada no material da Caelum sobre estrutura de dados. É muito, bom !

public void imprimir(){
No aux = new No(null);
for(aux = this.primeiro; aux.getProximo() != null; aux = aux.getProximo){
System.out.print(aux.getDado() + " ");
}
}

Eu já tentei imprimir usando lista.primeiro.dado e lista.primeiro.getDado() , mas está dando essa excessão : java.lang.nullpointerexception.