Ordenação de Objetos por ordem Alfabetica[RESOLVIDO]

4 respostas
W

Olaa pessoal do guj..
Prazer meu nome é Weverson,este é o meu primeiro topico aqui no forum ...

Então eu tenho a seguinte duvida eu tenho um objeto desse tipo

Nome nome = new Nome(
                         txtLiv1.getText(),
                         txtLiv2.getText(),
        Integer.parseInt(txtLiv5.getText()));
Isso eu iria exibir em um Jtable isso ja esta sendo feito,agora meu problema é que eu tenho que exibilo em ordem alfabetica cada vez que o usuario cadastrar um livro(usei o objeto nome como exemplo mas estou trabalhando com cadastro de livro) eu tenho que exibir esse livro em ordem alfabetica,sem contar que eu terei mais 3 objetos para deichar em ordem alfabetica no mesmo estilo que livro na tabela, como eu iria fazer isso ?Eu sei que para ordenar strings nos usariamos um Collator mais eu tentei da seguinte forma:
Nome nome = new Nome();

Set<String> set2 = new TreeSet<String>(Collator.getInstance());
nome = new Nome("Ana","feminino",20);
set2.add(nome);

Mais eu tenho quase certeza que esta errado ...
Alguem pode me ajudar por favor ..
Obrigado ...

4 Respostas

A

Cara eu fiz isso em um projeto que tive que fazer em ordem alfabetica:

String[] valores = new String[12];
	
	for(int i = 0; i &lt; generos.length; i++){
		valores[i] = generos[i].getNome(); // Passei todos os nomes para um array aux
	}

	Arrays.sort(valores); // ordena os nomes
T

Voce pode fazer com que sua classe “Nome” implemente comparable, ou ainda utilizar um Comparator personalizado.

Exemplo do uso do comparable:
http://serjaum.wordpress.com/2009/07/21/classificacao-com-comparable-e-comparator-em-java/

e tem esse aqui do guj sobre comparator:
http://www.guj.com.br/posts/list/54036.java
da uma atenção maior a resposta do amigo Mantu, que ta mais que completa.

Espero ter ajudado!

[]'s

W

Então cara so que eu preciso que conforme eu ordene o nome,os respectivos idade e sexo esrejam tbm ordenados conforme o nome,mais lembrando bem que o parametro de ordenação sera somente o nome …

Evangelista:
Ok irei da uma olhaaadaa …
Q isso oque vale é a intenção ^^

W

Ok Tiagoo Muitoo Obrigadoo isso resolveu meu problema QUASE TODO(dei uma olhada no primeiro link bom Material aquele ^^) …
Mais depois tive que pesquisar como ficaria a ordenação com acentuação…
Ai estão minhas classes pois se alguem precisa de exemplo:
Minha classe Main:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

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

Nome nom1 = new Nome("Ana","Feminino",10);
Nome nom2 = new Nome("Maria","Feminino",16);
Nome nom3 = new Nome("Âlberto","Masculino",45);

List<Nome>  lista = new ArrayList<Nome>();
lista.add(nom1);
lista.add(nom2);
lista.add(nom3);

Collections.sort(lista);

for(Nome n : lista)
    System.out.println(n);

Minha Classe Nome:

import java.text.Collator;
import java.util.Locale;

public class Nome implements Comparable<Nome> {

    private String nome,sexo;
    private int idade;

    public Nome(String nome,String sexo,int idade){
        this.nome=nome;
        this.sexo =sexo;
        this.idade = idade;
    }

public int compareTo(Nome n){
    Collator cot = Collator.getInstance(new Locale("pt","BR"));
    if(n != null)
    return cot.compare(this.getNome(),n.getNome());
    else
        return 0;
}

@Override
public String toString(){
    return "Nome "+getNome()+" Sexo: "+getSexo()+" Idade: "+getIdade();
}
//Daqui para baixo é somente o get's e set's ^^
Criado 6 de maio de 2010
Ultima resposta 6 de mai. de 2010
Respostas 4
Participantes 3