Uma arvore binaria de tipo composto + comparable = BUG

1 resposta
P

Dae povo!
Seguinte, eu tive que criar uma classe criando a minha BinaryTree, dai fui adcionar do tipo Aposta, e ele diz que o compareTo não pega.
Eu devo criar um compareTo na classe aposta? se sim, como ordeno pelo nome que tem dentro da aposta?

Classe da BinaryTree
package trabalhofinal;
import java.util.*;
import java.io.Serializable;

public class BinaryTree<Dado extends Comparable<Dado>> implements Serializable{
	
		class Nodo  implements Serializable {
			private Nodo pai = null;
			private Nodo esq = null;
			private Nodo dir = null;
			private Dado elem = null;
			
			public Nodo getDir() {
				return dir;
			}
			public void setDir(Nodo dir) {
				this.dir = dir;
			}
			public Nodo getEsq() {
				return esq;
			}
			public void setEsq(Nodo esq) {
				this.esq = esq;
			}
			public Nodo getPai() {
				return pai;
			}
			public void setPai(Nodo pai) {
				this.pai = pai;
			}
			public Dado getElem() {
				return elem;
			}
			public void setElem(Dado valor) {
				this.elem = valor;
			}		
		}

		private int qtde = 0;
		private Nodo refRaiz = null;
		private Nodo corrente = null;

		public BinaryTreeABP() {}
		
		public BinaryTreeABP(Dado [] vet)
		{
			for (Dado aux:vet)
				addABP(aux);
		}

		public void addABP(Dado d)
		{
			Nodo novo; 
			
			if (refRaiz == null)
			{
				novo = new Nodo();
				novo.setElem(d);
				novo.setPai(null);
				novo.setEsq(null);
				novo.setDir(null);
				
				refRaiz = novo;
				corrente = novo;
				
				qtde ++;
			}
			else 
				addABPAux(d, refRaiz);
		}
		
		private void addABPAux(Dado d, Nodo n)
		{
			Nodo novo;
			
			if (n != null)
			{
				if (d.compareTo(n.getElem()) < 0)
					if (n.getEsq() != null)
						addABPAux(d, n.getEsq());
					else
					{
						novo = new Nodo();
						novo.setElem(d);
						novo.setPai(n);
						novo.setEsq(null);
						novo.setDir(null);
						
						n.setEsq(novo);
						corrente = novo;
						qtde++;
					}
				else 
				{
					if (n.getDir() != null)
							addABPAux(d, n.getDir());
					else
					{
						novo = new Nodo();
						novo.setElem(d);
						novo.setPai(n);
						novo.setEsq(null);
						novo.setDir(null);
						
						n.setDir(novo);
						corrente = novo;
						qtde++;
					}
				}
			}

		}

		public Dado searchABP(Dado d)
		{
			Nodo nAux;
			Dado res = null;
			
			nAux = searchNodoValueABP(d, refRaiz);
			
			if (nAux != null)
				res = nAux.getElem();
			
			return res;
		}
		
		private Nodo searchNodoValueABP(Dado d, Nodo n)
		{
			Nodo res = null;
			
			if (n != null)
			   if (d.compareTo(n.getElem()) == 0)
				   res = n;
			   else if (d.compareTo(n.getElem()) < 0)
				   		res = searchNodoValueABP(d, n.getEsq());
			   else res = searchNodoValueABP(d, n.getDir());
			
			corrente = res;
			return res;
		}

		public Vector<Dado> traversalCentral()
		{
			Vector<Dado> res = new Vector<Dado>();
			
			traversalCentralAux(refRaiz, res);
			
			return res;
		}
			
		private void traversalCentralAux(Nodo n, Vector<Dado> res)
		{
			if (n != null)
			{
				traversalCentralAux(n.getEsq(), res);
				res.add(n.getElem());
				traversalCentralAux(n.getDir(), res);
			} 

		}
		

}
Classe Aposta
import java.util.*;

public class Aposta<Dado extends Comparable>{

    public String nome;
	public int ap1;
    public int ap2;
    public int ap3;
    public int ap4;
    public int ap5;
    public int ap6;
    public int ap7;
    public int ap8;
    public String numSerie;
    public String data;


	public Aposta() {
		super();
		//Gerando numero de série
        numSerie = (int) (1+Math.random()*100)+""+(int) (1+Math.random()*100)+""+(int) (1+Math.random()*100)+""+(int) (1+Math.random()*100)+""+(int) (1+Math.random()*100)+""+(int) (1+Math.random()*100);
        Calendar cal = new GregorianCalendar();
        cal = Calendar.getInstance();
        data = ""+cal;
    }
    public int getAp1() {
		return ap1;
	}

	public int getAp2() {
		return ap2;
	}

	public int getAp3() {
		return ap3;
	}

	public int getAp4() {
		return ap4;
	}

	public int getAp5() {
		return ap5;
	}

	public int getAp6() {
		return ap6;
	}

	public int getAp7() {
		return ap7;
	}

	public int getAp8() {
		return ap8;
	}

	public String getNome() {
		return nome;
	}

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

	public String getNumero() {
		String x = ""+ap1+"."+ap2+"."+ap3+"."+ap4+"."+ap5+"."+ap6+"."+ap7+"."+ap8;
        return x;
	}

	public void setNumero(int numero) throws EmptyNumException{
		if(numero<=0){
            throw new EmptyNumException("Numero não aceito!");
        }
        else{
            if(ap1==0){
                ap1=numero;
            }
            else if(ap2==0){
                ap2=numero;
            }
            else if(ap3==0){
                ap3=numero;
            }
            else if(ap4==0){
                ap4=numero;
            }
            else if(ap5==0){
                ap5=numero;
            }
            else if(ap6==0){
                ap6=numero;
            }
            else if(ap7==0){
                ap7=numero;
            }
            else if(ap8==0){
                ap8=numero;
            }
            else throw new EmptyNumException("Todos os numeros ja apostados!");
            }

        }

	public String getNumSerie() {
		return numSerie;
	}

    public String getData(){
        return data;
    }
}

1 Resposta

P

ja resolvi, criei um compareTo que atendia minhas necessidades (ordenando a ordem por nome dos apostadores).
Vlws!

Criado 23 de novembro de 2008
Ultima resposta 23 de nov. de 2008
Respostas 1
Participantes 1