Duvida sobre coleções

6 respostas Resolvido
java
Dayson_Rodrigues

olá, estou com uma duvida sobre coleções ArraysList. No meu bean quero que minha lista retorne em ordem.

fiz o seguinte.

Classe Fabricante

public int compareTo(Fabricante o) {
		return this.descricao.compareToIgnoreCase(o.descricao);
	}

MeuBean
private List fabricantes;

@PostConstruct
void inicializar() {
	 fabricantes = new ArrayList<Fabricante>();
	 fabricantes = fabricanteService.listarTodos();
}

public List<Fabricante> getFabricantes() {
	return Collections.sort(fabricantes); //não da certo
}

6 Respostas

lvbarbosa

Dayson,

O Collections.sort não retorna uma lista nova (não retorna nada, na verdade). Ele ordena a lista que é passada por argumento.

Exemplo:

List<Integer> numeros = Arrays.asList(3, 2, 1);
Collections.sort(numeros);
System.out.println(numeros); // imprime 1, 2, 3

Se você quer dar sort na lista toda vez q esse método for chamado, você pode criar uma cópia da lista de fabricantes, ordena-la e retorna-la.

Pode usar as streams do Java 8 também.

Se tua lista não fica mudando, vc pode dar sort só na inicialização, poupando processamento desnecessário.

Dayson_Rodrigues

no caso seria Assim:

@PostConstruct
void inicializar() {
	 fabricantes = fabricanteService.listarTodos();
	 Collections.sort(fabricantes);
}
lvbarbosa

Quase. Não precisa da primeira linha. Você tá criando uma lista vazia e depois descartando ela, atribuindo a lista com os fabricantes à variável.

Dayson_Rodrigues

então assim.

lvbarbosa

Isso!

Dayson_Rodrigues
Solucao aceita

obrigado! vlw!

Criado 24 de fevereiro de 2017
Ultima resposta 24 de fev. de 2017
Respostas 6
Participantes 2