Listas Ordenadas Por Nome

Gente estou com um problema no seguinte código


public class TrabalhoLista { 
    lista primeiro=null,ultimo=null;   
    
    public void inserir(lista novoElemento ){
   
     if(this.primeiro == null){
        this.primeiro = novoElemento;
        this.ultimo = novoElemento;       
        
     } else{
         
       lista aux = this.primeiro;
       boolean achou = false;
     
       while(aux != null && !achou){
         if(aux.nome.compareTo(novoElemento.nome) > 0){
           achou = true;          
         } else{
           aux = aux.proximo;
         }
       }

       if(achou){
         novoElemento.anterior = aux.anterior;
         novoElemento.anterior.proximo = novoElemento;
         aux.anterior = novoElemento;
         novoElemento.proximo=aux;
         
       } else{
         this.ultimo.proximo = novoElemento;
         novoElemento.anterior = this.ultimo;   
         ultimo=novoElemento;
       }
     }    
    }
    
    public void remover(lista Elemento ){
        boolean achou=false;
        lista aux = this.primeiro;
      
       while(aux != null && achou){
         if(Elemento.nome.equals(aux.nome)){
           achou = true;
           aux.anterior.proximo=aux.proximo;           
           aux.proximo.anterior=aux.anterior;
           aux.proximo=null;
           aux.anterior=null;      
                      
         } else{
           aux = aux.proximo;
         }
       }

    }
    public void imprimir(){
       lista aux = this.primeiro;
       while(aux !=null ){ 
           System.out.println(aux.nome);
           System.out.println(aux.idade);
           System.out.println(aux.sexo);
           System.out.println(aux.nacionalidade);  
           System.out.println("");
           
           aux=aux.proximo;
       }
       
    }

}

Os métodos estão funcionando exceto o de inserir ordenado que não está ordenando, se alguem poder me dar uma luz de porque não organiza.

Grato desde já

Seu codigo está estranho, “lista” (com letra minuscula) é uma classe sua? Ela herda ou implementa qual Collection?

Dependendo da para usar o metodo sort

talvez este tópico te ajuda: http://www.guj.com.br/java/16188-ordenar-um-arraylist

lista é uma classe com elemento do tipo noDuplo, referente a Collection não sei qual é.
Não posso usar bibliotecas prontas como o sort, tenho que fazer a ordenação manual já ordenada

Bom dia!

Desculpe, pelo fato de lista ser uma classe nao teria que começar com uma letra maiscula? estou aprendendo java agora… e gostaria muito de ajudar e ser ajudado (principalmente).

Também comecei a aprender java nesse semestre na faculdade até aonde eu sei digamos se for composto de duas palavras seria a primeira letra da primeira palavra minuscula,e primeira letra da segunda palavra maiuscula por exemplo: carroNovo ou camisaAmarela, casaDaPraia. eu acho que é isso.

mas a minha classe compila tudo certinho só não ordena msm.

hum entendi,
vou acompanhar seu tópico pra não dar pitaco errado, e ai gostando da linguagem java? eu estou gostando muito comprei um livro e me matriculei na formação java na caelum aqui do
Rio de Janeiro, começo dia 26/11.

Se alguem conseguir olhar o código , pois revejo e não vejo motivo para não funcionar.

Bom, para os dois, que comentaram acima. Classe SEMPRE deve comecar com letra Maiuscula. Metodos, variaveis, pacotes que devem iniciar com minuscula e o restante maiuscula. Ex: classe Pessoa, atributo listaDePessoas, metodo listarPessoas(). Mais detalhes de convencoes Java, tem neste link http://www.tiexpert.net/programacao/java/nomenclatura.php

Quanto a sua duvida, esta dificil ajudar somente com este codigo, pois esta um pouco confusa. Passe sua classe Lista e sua implementacao de teste para que eu possa reproduzir e verificar melhor

Conforme solicitado pelo Igor segue as outras classes

Classe com o main


package trabalholista;
import com.sun.xml.internal.ws.api.pipe.NextAction;
import java.util.*;
public class teste {
     public static void main (String args[]) {
         TrabalhoLista la = new TrabalhoLista();
         int x=0;
         Scanner s = new Scanner(System.in);
     
         while (x!=9){
             
             System.out.println("Digite");
             System.out.println("1 - Inserir");
             System.out.println("2 - Excluir");
             System.out.println("3 - Imprimir");
             System.out.println("9 - Sair");
             
             x = s.nextInt();
             
             if(x==1){
                 System.out.println();
                 lista novoNo  = new lista();
                 System.out.println("Digite o nome");
                 novoNo.nome=s.next();
                 System.out.println("Digite a idade");
                 novoNo.idade=s.nextInt();
                 System.out.println("Digite o seu sexo");
                 novoNo.sexo=s.next();
                 System.out.println("Digite a sua nacionalidade");
                 novoNo.nacionalidade=s.next();
                 
                 la.inserir(novoNo);                               
             }
                 else if(x==2){
                    System.out.println();
                    System.out.println("b");    
                 }
                     else if(x==3){
                        la.imprimir();
                     }   
             
         } 
         System.out.println();
         System.out.println("Bye");
         
     }
}

Classe da lista


package trabalholista;
public class lista {
    String nome;
    int idade;
    String sexo;
    String nacionalidade;
    lista proximo;  
    lista anterior;
    int contador=0;
    
    public lista(){
        this.nome=null;
        this.proximo=null;
        this.idade=0;
        this.sexo = null;
        this.nacionalidade = null;              
        this.contador=0;
    }
    
}

Classe com os métodos

package trabalholista;
public class TrabalhoLista { 
    lista primeiro=null,ultimo=null;   
    
    public void inserir(lista novoElemento ){
   
    
    //se não existir nenhum elemento na lista o primeiro e o último são o mesmo nó
     if(this.primeiro == null){
        this.primeiro = novoElemento;
        this.ultimo = novoElemento;       
        
     } else{
         
       lista aux = this.primeiro;
       boolean achou = false;
     
       //realiza a busca para encontrar a posição a realizar a inserção
       while(aux != null && !achou){
         if(aux.nome.compareTo(novoElemento.nome) > 0){
           achou = true;          
         } else{
           aux = aux.proximo;
         }
       }

      
       if(achou){
         novoElemento.anterior = aux.anterior;
         novoElemento.anterior.proximo = novoElemento;
         aux.anterior = novoElemento;
         novoElemento.proximo=aux;
         
       } else{
         this.ultimo.proximo = novoElemento;
         novoElemento.anterior = this.ultimo;   
         ultimo=novoElemento;
       }
     }    
    }
    
    public void remover(lista Elemento ){
        boolean achou=false;
        lista aux = this.primeiro;
      
       while(aux != null && achou){
         if(Elemento.nome.equals(aux.nome)){
           achou = true;
           aux.anterior.proximo=aux.proximo;           
           aux.proximo.anterior=aux.anterior;
           aux.proximo=null;
           aux.anterior=null;      
                      
         } else{
           aux = aux.proximo;
         }
       }

    }
    public void imprimir(){
       lista aux = this.primeiro;
       while(aux !=null ){ 
           System.out.println(aux.nome);
           System.out.println(aux.idade);
           System.out.println(aux.sexo);
           System.out.println(aux.nacionalidade);  
           System.out.println("");
           
           aux=aux.proximo;
       }
       
    }

}

Grato