palavras.sort(String.CASE_INSENSITIVE_ORDER);
esse método, tem o mesmo efeito desse método ?
palavras.sort((String s1, String s2) -> s1.compareTo(s2));
palavras.sort(String.CASE_INSENSITIVE_ORDER);
esse método, tem o mesmo efeito desse método ?
palavras.sort((String s1, String s2) -> s1.compareTo(s2));
Oi Marcos, tudo bem?
O String.CASE_INSENSITIVE_ORDER
não tem o mesmo efeito do método compareTo()
.
Imagine a seguinte situação, onde temos "Alura online"
e "Editora casa do codigo"
. Atente para o "A" e o "E" maísculos:
List<String> palavras = new ArrayList<>();
palavras.add("Alura online");
palavras.add("Editora casa do codigo");
palavras.add("caelum");
palavras.sort((String s1, String s2) -> s1.compareTo(s2));
System.out.println(palavras);
Quando executarmos o código, teremos:
[Alura online, Editora casa do codigo, caelum]
Perceba que o "caelum"
ficou após o "Editora"
, ou seja o "c" ficou depois do "E". Não está em ordem alfabética.
Isso ocorre porque o método compareTo()
realiza a comparação baseado no valor que se encontra na tabela ASCII: http://ic.unicamp.br/~everton/aulas/hardware/tabelaASCII.pdf.
Se você olhar a tabela o "A" e o "E" tem um número menor que o "c". Por isso esse comportamento do nosso programa.
Para finalizar, o String.CASE_INSENSITIVE_ORDER
tem um comportamento similar ao método compareToIgnoreCase()
. Isso é quando desejamos indicar que queremos ordenar em ordem alfabética independente das letras estarem em maísculo ou minísculo.
Basicamente é isso que queremos dizer com o "Ignore case". Estamos dizendo: java, não diferencie maísculas e minúsculas:
List<String> palavras = new ArrayList<>();
palavras.add("Alura online");
palavras.add("Editora casa do codigo");
palavras.add("caelum");
palavras.sort(String.CASE_INSENSITIVE_ORDER);
palavras.sort((String s1, String s2) -> s1.compareToIgnoreCase(s2)); // Ignore case: mesmo efeito
System.out.println(palavras);
Saída:
[Alura online, caelum, Editora casa do codigo]
Faz sentido?
Abraço!
Ops, errei em onde colocar minha resposta de uma aula. Foi mal.