package OrdenacaoListas;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import Contas.Cliente;
import Contas.Conta;
import Contas.ContaCorrente;
import Contas.ContaPoupanca;
/**
 * 
 * 
 * ORDEM NATURAL
 *     É a ordem definida pelo próprio elemento da lista.
 * 
 * No nosso exemplo a classe Conta define o seu próprio critério
 *  de ordenação implementando a interface java.lang.Comparable.
 *    Nesse caso não é utilizado nenhum Comparator.
 * @author jejec
 *
 */
public class OrdemNaturalLegado {
    public static void main(String[] args) {
        Conta cc1 = new ContaCorrente(new Cliente("333444555-00"), 33);
        cc1.getTitular().setNome("Nico");
        cc1.deposita(333.0);
        Conta cc2 = new ContaPoupanca(new Cliente("213432670-55"), 44, 12);
        cc2.getTitular().setNome("Guilherme");
        cc2.deposita(444.0);
        Conta cc3 = new ContaCorrente(new Cliente("234567890-11"), 11);
        cc3.getTitular().setNome("Paulo");
        cc3.deposita(111.0);
        Conta cc4 = new ContaPoupanca(new Cliente("553667119-43"), 22, 12);
        cc4.getTitular().setNome("Ana");
        cc4.deposita(222.0);
        List<Conta> lista = new ArrayList<>();
        lista.add(cc1);
        lista.add(cc2);
        lista.add(cc3);
        lista.add(cc4);
        for (Conta conta : lista) {
            System.out.println(conta + " Nome: " + conta.getTitular().getNome());
        }
        System.out.println("--------------");
        Collections.sort(lista);//ESSA LINHA NÃO COMPILA
        //
        for (Conta conta : lista) {
            System.out.println(conta + " Nome: " + conta.getTitular().getNome());
        }
    }
}
A classe Conta:
package OrdenacaoListas;
public abstract class Conta implements Comparable<Conta>{
    //atributos
    private double saldo;
    private int agencia;
    private int numero;
    private Cliente titular;
    private static int contasCriadas = 0;
    //construtor
    public Conta(Cliente titular, int agencia) {
        contasCriadas++;
        this.titular = titular;
        this.agencia = agencia;
        //System.out.println("Criou-se uma conta.");
    }
    //getters e setters
    public static int getContasCriadas() {
        return Conta.contasCriadas;
    }
    public int getAgencia() {
        return agencia;
    }
    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }
    public int getNumero() {
        return numero;
    }
    public void setNumero(int numero) {
        this.numero = numero;
    }
    public Cliente getTitular() {
        return titular;
    }
    public double getSaldo() {
        return saldo;
    }
    //metodos
    public void deposita(double valor){
        this.saldo += valor;
    }
    public void saca(double valor) throws MyExceptionConta{
        if(this.saldo < valor) {
            throw new MyExceptionConta("Hellow Exception.");
        }
        this.saldo -= valor;
    }
    public void transfere(double valor, Conta destino) throws MyExceptionConta{
            this.saca(valor);
            destino.deposita(valor);
            System.out.println(
                    "Transferencia realizada com sucesso de " + this.titular
                    + " para " + destino.titular);    
    }
    @Override
    public boolean equals(Object obj) {
        Conta c = (Conta) obj;
        if(this.agencia == c.agencia && this.titular.equals(c.titular)) {
            return true;
        }
        return false;
    }
    @Override
    public String toString() {
//        return "_CPF do titular: " + this.getTitular().getCpf() + 
//                " _Agencia: " + this.agencia;
        return this.titular + " _Agencia: " + this.agencia;
    }
}O compareTo está implementado em ContaCorrente e ContaPoupanca, dessa forma:
@Override
     public int compareTo(Conta outra) {
        return Double.compare(this.getSaldo(), outra.getSaldo());
     }A Exception que aparece é:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method sort(List<T>) in the type Collections is not applicable for the arguments (List<Conta>)
    at OrdenacaoListas.OrdemNaturalLegado.main(OrdemNaturalLegado.java:54)