Home   Java   Como fazer ordenação de uma lista de String com acentos em Java

Como fazer ordenação de uma lista de String com acentos em Java
Lista-String

Como fazer ordenação de uma lista de String com acentos em Java

Olá Amigos, esta semana um aluno precisou ordenar uma lista de nomes com acentos em Java e me pediu uma solução possível para o problema. Esta atividade é relativamente comum em nosso idioma, pois temos a ocorrência de várias palavras acentuadas. Quando a JVM está configurada para o LOCALE correto – Português (pt-BR) não temos problemas com a ordenação de String. O ruim é quando temos alguns caracteres especiais como “¨”, “º” entre outros.

Lista-String


Quando utilizamos a abordagem padrão o Java acaba considerando o Caracter Enconding configurado na JVM que muitas vezes é diferente do idioma padrão dos usuários. Para resolver este problema API do Java temos a classe Collator. Faremos um exemplo prático para entendermos como resolver o problema.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package br.com.feltex.jse.colecao;
 
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class MeuCollator{
 
	public static void main(String[] args) {
		List<String> lista = new ArrayList<>();
 
		lista.add("über");
		lista.add("Äther");
		lista.add("kreativ");
		lista.add("zahlen");
		lista.add("können");
		lista.add("Österreich");
		lista.add("Löhnhoff");
		lista.add("Dähne");
		lista.add("Büscher");
		lista.add("Möde");
		lista.add("Müller");
		lista.add("Linsenbröder");
		lista.add("Lúkin");
 
		System.out.println("Ordem de inclusão: " + lista);
 
		// Realiza a ordenação dos itens
		Collections.sort(lista);		
		System.out.println("Ordem de Simples: " + lista);
 
		Collator collator = Collator.getInstance();
		collator.setStrength(Collator.PRIMARY);
		Collections.sort(lista, collator);		
 
		System.out.println("Ordem com Collator: " + lista);
	}
}

As saídas serão:

1
2
  Ordem de inclusão: [über, Äther, kreativ, zahlen, können, Österreich,
 Löhnhoff, Dähne, Büscher, Möde, Müller, Linsenbröder, Lúkin]
1
2
Ordem de Simples: [Büscher, Dähne, Linsenbröder, Löhnhoff, Lúkin, Möde,
 Müller, kreativ, können, zahlen, Äther, Österreich, über]
1
2
 Ordem com Collator: [Äther, Büscher, Dähne, können, kreativ,
 Linsenbröder, Löhnhoff, Lúkin, Möde, Müller, Österreich, über, zahlen]


Você pode definir a propriedade para força de um Collator a determinar o nível de diferença considerada significativa nas comparações. Quatro pontos fortes são fornecidos: PRIMARY, SECONDARY, TERTIARY, and IDENTICAL (Primário, Secundário, Terciário, e Idênticos). A atribuição exata dos pontos fortes de recursos de linguagem é depende do locale. Por exemplo, em checo, "e" e "f" são considerados principais diferenças, enquanto o "e" e "ê" diferenças secundárias, "e" e "E" são diferenças terciárias e "e" e "e" são idênticos .

Estes resultados foram obtidos ao trabalhar com uma lista de String na versão 7 do Java. Atenção para a sintaxe
“List lista = new ArrayList<>();” que só funcionará se você utilizar a versão 7 ou superior do Java.
Caso utilize uma versão anterior utilize a sintaxe

1
  List<String> lista = new ArrayList<String>();

Links externos


Classe Collator
Ordenação de Lista de objetos em Java

Abraços e por hoje é só! Vida que segue!

Não esqueça de curtir este post nas rede sociais. Dê a sua contribuição social e ajude o autor:

Deixe uma resposta

Get Best Services from Our Business.