Ordenação de Usuário por Nome

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;
	}

Faz assim:

Na classe usuario;[code]
public class Usuario implements Comparable {

gets e sets

public int compareTo(Object arg0) {
	Collator collator = Collator.getInstance(new Locale("pt", "BR"));
	if (arg0 != null) {
		Usuario usuario = (Usuario) arg0;
		return collator.compare(this.getNome(), usuario.getNome());
	} else {
		return 0;
	}
}

}[/code]
e onde vc quer pegar ordenado

Collections.sort(list);

Surfzera,

Você tem duas opções para usar o Collections.sort.

  1. Classe Usuario implementa a interface java.lang.Comparable resultado em uma implementação do método compareTo(T o)
  2. 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!

Até mais.

Oi!

[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.

Há uma explicação bastante completa sobre isso aqui: