Metodo compareTo()

Bom dia, galera.

Estou tentando fazer uma lista encadeada com String, mas para mostrar em ordem alfabetica precisaria fazer um compareTo e o meu codigo está dando um erro no metodo, abaixo está o codigo. Grato pela ajuda.

/*
         * To change this license header, choose License Headers in Project Properties.
         * To change this template file, choose Tools | Templates
         * and open the template in the editor.
         */
        package listaordenada;

        /**
         *
         * @author gustavo.mariano
         */
         import javax.swing.*;

         public class ListaOrd {
                private Node comeco; //Nó do começo da Lista


                //Inicializa uma Lista no estado vazia (construtor)
                public ListaOrd() {
                        comeco = null;
                }

                //Verifica se a lista está vazia
                public boolean isNull()	{
                        return(comeco==null);
                }

                //Método que converte um objeto em float para poder ser comparado
                private int emFloat(Object x)	{
                        Node a = comeco;
                        String b = (String) x; 
                        int resp =  a.compareTo(b);
                        return resp;
                }

                //Insere um elemento na Lista Ordenada
                public void ins(Object x) {
                        Node novo = new Node();
                        Node aux;
                        novo.setDado(x);

                        //Se a lista estiver vazia ou o elemento for menor que o primeiro
                        if(isNull() || emFloat(x) < emFloat(comeco.getDado()) )	{
                                novo.setProx(comeco);
                                comeco = novo;
                        }
                        else {
                                aux = comeco;
                                while(aux.getProx()!=null && emFloat(x) > emFloat(aux.getProx().getDado()))
                                        aux = aux.getProx();
                                novo.setProx(aux.getProx());
                                aux.setProx(novo);
                        }
                }

                //Imprime o conteúdo da Lista
                public void print()	{
                        if(!isNull()) {
                                Node aux;
                                aux = comeco;
                                String saida = "";
                                while(aux!=null){
                                        saida += aux.getDado().toString() + ", ";
                                        aux = aux.getProx();
                                }
                                JOptionPane.showMessageDialog(null,"L:["+saida+"]");
                        }
                        else
                                System.out.println("Lista Vazia!");
                }

                //Remove um elemento da lista e retorna true se conseguiu remover e false caso não
                public boolean rem(Object x) {
                        Node aux;
                        //Se a lista estiver vazia ou o elemento for menor que o primeiro, não existe
                        if(isNull() || emFloat(x) < emFloat(comeco.getDado()) )
                                return false;
                        else {
                                //Se for o primeiro elemento
                                if(emFloat(x)==emFloat(comeco.getDado())) {
                                        comeco = comeco.getProx();
                                        return true;				
                                }
                                //Se for maior que o primeiro, achar a posição
                                else {
                                        aux = comeco;
                                        //Navega até aposição onde deveria encontrar
                                        while(aux.getProx() != null && emFloat(x) > emFloat(aux.getProx().getDado()))
                                                aux = aux.getProx();

                                        //Se encontrou
                                        if(aux.getProx() != null && emFloat(x) == emFloat(aux.getProx().getDado()))	{
                                                aux.setProx(aux.getProx().getProx());
                                                return true;
                                        }
                                        else //Não encontrou o elemento
                                                return false;
                                }
                        }
                }

                //Busca por um elemento na lista e retornao nó onde encontrou
                public Node find(Object x) {
                        Node aux = comeco;

                        //Navega até o nó de interesse
                        while(aux !=null && emFloat(x) > emFloat(aux.getDado()) )
                                aux = aux.getProx();

                        //Se achou o elemento
                        if(aux !=null && emFloat(x) == emFloat(aux.getDado()))
                                return aux;
                        else
                                return null;
                }

         public static void main(String[] args) {
                // TODO code application logic here
            }
         }

Está também o codigo Node que e o nó:

/*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package listaordenada;

    /**
     *
    /*
     * Definindo a estrutura de um nó (Lista Encadeada)
     */

    public class Node
    {
            private Object dado; 	//Dado a ser armazenado no nó
            private Node prox;		//Referência para o próximo nó

            //Devolve o conteúdo do nó
            public Object getDado()
            {
                    return dado;
            }

            //Atribui um valor ao conteúdo do nó
            public void setDado(Object novovalor)
            {
                    dado = novovalor;
            }

            //Devolve a referência do próximo nó
            public Node getProx()
            {
                    return prox;
            }

            //Atribui uma referência para o próximo nó
            public void setProx(Node novoprox)
            {
                    prox = novoprox;
            }


    }

E o erro, criatura?

Ta falando pra cria o metodo compareTo na classe Node, só que isso dai não e tipo o equal(), que já e do java?

Não.

private int emFloat(Object x) {
    Node a = comeco;
    String b = (String) x;
    int resp = a.compareTo(b);
    return resp;
}

Você quer comparar a String recebida (considerando que o objeto x será sempre uma String) com o atributo dado do seu objeto Node a?

Sim, seria isso mesmo.

Então, você precisa fazer o casting do atributo dado também, porque ele é Object e não String:

    Node a = comeco;
    String b = (String) x;
    String dadoDoNodeA = (String) a.getDado();
    return dadoDoNodeA.compareTo(b);