Introdução
Em Java, não existe um único método dentro da classe String para fins de ordenação. No entanto, podemos utilizar o fato de que um array de caracteres pode ser facilmente ordenado usando vários algoritmos. Existem múltiplas maneiras de ordenar strings em Java, como usar Arrays.sort(), Comparator em Arrays.sort(), ou algoritmos de ordenação comumente usados como Selection Sort e Bubble Sort. Neste laboratório, exploraremos como ordenar uma string em Java usando o método Arrays.sort().
Escreva o código
Nesta etapa, escreveremos o programa Java para ordenar uma string usando a função Arrays.sort(). O código recebe uma string de entrada, converte-a em um array de caracteres, ordena o array usando a função Arrays.sort() e, em seguida, converte-o de volta para uma string.
import java.util.Arrays;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
char[] tempArr = originalString.toCharArray(); // convert string to character array
Arrays.sort(tempArr); // sort character array
sortedString = new String(tempArr); // convert sorted character array to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
}
Compile e execute o código
Abra o terminal e navegue até o diretório ~/project. Compile o programa Java usando o seguinte comando:
javac SortString.java
Execute o programa Java usando o seguinte comando:
java SortString
A saída do programa será:
Original String: The quick brown fox jumps over the lazy dog
Sorted String: Tabcdeeefghhijklmnoooopqrrstuuvwxyz
Implementar ordenação sem distinção entre maiúsculas e minúsculas
Em Java, o método Arrays.sort() compara caracteres usando seus valores Unicode. Para ordenar uma string sem levar em consideração a sensibilidade a maiúsculas e minúsculas, podemos modificar o algoritmo de ordenação usando um Comparator. Nesta etapa, editaremos nosso código Java anterior para ordenar a string sem considerar o caso.
import java.util.Arrays;
import java.util.Comparator;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
Character[] tempArr = toCharacterArray(originalString.toLowerCase()); // convert lowercase string to Character array
Arrays.sort(tempArr, new Comparator<Character>() { // sort with case-insensitive comparator
@Override
public int compare(Character c1, Character c2) {
return c1.compareTo(c2);
}
});
StringBuilder sb = new StringBuilder(tempArr.length); // create a StringBuilder object
for (Character c : tempArr) {
sb.append(c.charValue()); // add sorted characters to the StringBuilder object
}
sortedString = sb.toString(); // convert StringBuilder object to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
// method to convert a string to Character array
private static Character[] toCharacterArray(String str) {
Character[] arr = new Character[str.length()];
for (int i = 0; i < str.length(); i++) {
arr[i] = str.charAt(i);
}
return arr;
}
}
Compilar e executar o código atualizado
Compile o programa Java atualizado usando o seguinte comando:
javac SortString.java
Execute o programa Java usando o seguinte comando:
java SortString
A saída do programa será:
Original String: The quick brown fox jumps over the lazy dog
Sorted String: abcdeeefghhijklmnoooopqrrsttuuvwxyz
Implementar ordenação utilizando o método tradicional
Nesta etapa, implementaremos a ordenação em um array de caracteres usando um método tradicional de loop aninhado. O algoritmo comparará cada caractere com os caracteres à sua direita e trocará os caracteres se o caractere à direita for menor que o caractere atual.
import java.util.Arrays;
public class SortString {
public static void main(String[] args) {
String originalString = "The quick brown fox jumps over the lazy dog";
String sortedString = "";
char[] tempArr = originalString.toCharArray(); // convert string to character array
int n = tempArr.length;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (tempArr[i] > tempArr[j]) {
char temp = tempArr[i];
tempArr[i] = tempArr[j];
tempArr[j] = temp;
}
}
}
sortedString = new String(tempArr); // convert sorted character array to a string
System.out.println("Original String: " + originalString);
System.out.println("Sorted String: " + sortedString);
}
}
Compilar e executar o código atualizado
Compile o programa Java atualizado usando o comando anterior:
javac SortString.java
Execute o programa Java usando o seguinte comando:
java SortString
A saída do programa será:
Original String: The quick brown fox jumps over the lazy dog
Sorted String: Tabcdeeefghhijklmnoooopqrrstuuvwxyz
Resumo
Neste laboratório, aprendemos como ordenar uma string em Java usando o método Arrays.sort(). Também aprendemos como implementar a ordenação sem distinção entre maiúsculas e minúsculas (case-insensitive sorting) usando Comparator e a ordenação tradicional usando loops aninhados.



