Pessoal tenho uma Classe Usuario com os seguinte atributos nome, e cnpjUnidade gostaria de ordenar minha lista pelo nome do Usuário. Vejam como estou tetando fazer…
public List<Usuario> selecionaTodosUsuarios() throws SQLException {
List<Usuario> lista = (List<Usuario>) repositorioDeUsuario.selecionaTodos();
for (Usuario usuario : lista) {
Usuario usuario1 = localizarUsuarioLDAP(usuario.getCodigoTrim());
usuario.setNome(usuario1.getCodigoTrim());
usuario.setCnpjUnidade(usuario1.getCnpjUnidadeTrim());
}
//Ordeno a Lista
Collator collator = Collator.getInstance(new Locale("pt", "BR"));
List<Usuario> minhaListaOrdenada = lista; // Aqui não sei como pegar o objeto usuario.getNome() e ordenar por ele e para retornar minha lista
Collections.sort(minhaListaOrdenada, collator);
return lista;
}
Você tem duas opções para usar o Collections.sort.
Classe Usuario implementa a interface java.lang.Comparable resultado em uma implementação do método compareTo(T o)
Você cria uma classe(pode ser anônima) que implemente a interface java.util.Comparator resultado em uma implementação do método int compare(T o1, T o2);
Os métodos compareTo(T o) e compare(T o1, T o2) é que possuirão a implementação que fazem a ordenação.
Repare que os dois retornam um int e de acordo com a documentação:
Tenta fazer com essas informações aí… Se não conseguir, avisa!
[code]public class Teste {
public static void main(String[] args) {
User u = new User();
u.setName(“Joaquim”);
User u1 = new User();
u1.setName("Neusa");
User u2 = new User();
u2.setName("Faizao");
List<User> users = new ArrayList<User>();
users.add(u1);
users.add(u2);
users.add(u);
Collections.sort(users, new User());
for(User user : users)
System.out.println(user.getName());
}
}
class User implements Comparator {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public int compare(User o1, User o2) {
return o1.getName().compareTo(o2.getName());
}
}[/code]
Você pode adicionar ao método compare verificação de nomes nulo, por exemplo.
Mas ai vai a seu critério, mas basicamente é isso e funciona perfeitamente.
Aqui no GUJ mesmo tem ótimo post sobre Comparator e Comparable, dá uma pesquisada.
Abraços.
Opa.Collections.sort(usuarios, new Comparator<Usuario>() {
public int compare(Usuario u1, Usuario u2) {
return u1.getNome().compareTo(u2.getNome());
}
});Abraço.