La clase de string no tiene ningún método que ordene directamente una string, pero podemos ordenar una string aplicando otros métodos uno tras otro. La string es una secuencia de caracteres. En java, los objetos de String son inmutables, lo que significa una constante y no se pueden cambiar una vez creados.
Crear una string
Hay dos formas de crear una string en Java:
- Literal de string
String s = “GeeksforGeeks”;
- Usando una nueva palabra clave
String s = new String (“GeeksforGeeks”);
Nota: Como sabemos que String es inmutable en Java, por lo tanto, en el tercer paso, debemos crear una nueva string.
Métodos:
Existen dos métodos con los que podemos ordenar alfabéticamente cualquier string en Java
- Sin usar el método sort()
- Usando el método sort()
Ilustración:
Input string : "geeksforgeeks" Output string : "eeeefggkkorss"
Ahora analicemos los métodos e implementemos los mismos.
Método 1: sin utilizar el método sort()
Aquí estableceremos un enfoque para ordenar una string sin usar ninguna lógica predefinida. Por lo tanto, también se convierte en un enfoque importante desde el punto de vista perceptivo de una entrevista.
Procedimiento:
- Convierta una string en una array con la ayuda del método toCharArray() de la clase String
- Ahora use bucles anidados para verificar los elementos de intercambio de una array.
- Imprima estos elementos de la array de caracteres.
Ejemplo
Java
// Java program to Sort a String Alphabetically // Using toCharArray() method // Without using sort() method // Importing required classes import java.io.*; import java.util.Arrays; // Main class class GFG { // Main driver method public static void main(String[] args) throws Exception { // Custom string input String str = "geeksforgeeks"; // Converting string into an array for computation char arr[] = str.toCharArray(); // Nested loops for comparison of characters // in above character array char temp; int i = 0; while (i < arr.length) { int j = i + 1; while (j < arr.length) { if (arr[j] < arr[i]) { // Comparing the characters one by one temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } j += 1; } i += 1; } // By now loop is done means we have // iterated the whole array System.out.println(arr); } }
Producción:
eeeefggkkorss
Método 2: usando el método sort()
2A Usando el método sort() – clasificación natural
Procedimiento:
- La lógica principal es el método toCharArray() de la clase String sobre la string de entrada para crear una array de caracteres para la string de entrada.
- Ahora use el método Arrays.sort(char c[]) para ordenar la array de caracteres.
- Utilice el constructor de la clase String para crear una string ordenada a partir de una array de caracteres.
Ejemplo 1
Java
// Java program to Sort a String Alphabetically // Using toCharArray() method // With using the sort() method // Importing Arrays class from java.util package import java.util.Arrays; // Main class public class GFG { // Method 1 // To sort a string alphabetically public static String sortString(String inputString) { // Converting input string to character array char tempArray[] = inputString.toCharArray(); // Sorting temp array using Arrays.sort(tempArray); // Returning new sorted string return new String(tempArray); } // Method 2 // Main driver method public static void main(String[] args) { // Custom string as input String inputString = "geeksforgeeks"; String outputString = sortString(inputString); // Print and display commands // Input string System.out.println("Input String : " + inputString); // Output string System.out.println("Output String : " + outputString); } }
Input String : geeksforgeeks Output String : eeeefggkkorss
2B Usando el método sort() – Clasificación personalizada
El método Arrays.sort(char c[]) ordena los caracteres según su valor ASCII, podemos definir nuestro comparador personalizado para ordenar una string.
Ilustración:
Input String : GeeksforGeeks Output String : eeeefGGkkorss
Procedimiento:
- Convierta la string de entrada en una array de caracteres . No hay un método directo para hacerlo. Usaremos for loop para llenar la array.
- Utilice el método Arrays.sort(T [ ], Comparator c) para ordenar la array de caracteres. Para esto, debemos implementar el método compare() basado en nuestro comportamiento de clasificación personalizado.
- Ahora podemos usar StringBuilder para convertir la array de caracteres en String.
Ejemplo 2
Java
// Java Program to Sort a Mixed String Containing // Uppercase and Lowercase Characters // Importing required classes import java.util.Arrays; import java.util.Comparator; // Main class class GFG { // Method 1 // To sort a mixed string public static String sortString(String inputString) { // Converting input string to Character array Character tempArray[] = new Character[inputString.length()]; for (int i = 0; i < inputString.length(); i++) { tempArray[i] = inputString.charAt(i); } // Sort, ignoring case during sorting Arrays.sort(tempArray, new Comparator<Character>() { // Method 2 // To compare characters @Override public int compare(Character c1, Character c2) { // Ignoring case return Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // Using StringBuilder to convert Character array to // String StringBuilder sb = new StringBuilder(tempArray.length); for (Character c : tempArray) sb.append(c.charValue()); return sb.toString(); } // Method 3 // MAin driver method public static void main(String[] args) { // Custom input string String inputString = "GeeksforGeeks"; // Calling method 1 to sort input string // and storing in a string String outputString = sortString(inputString); // Print and display the input and output strings System.out.println("Input String : " + inputString); System.out.println("Output String : " + outputString); } }
Input String : GeeksforGeeks Output String : eeeefGGkkorss
Nota:
public int compare(Object o1, Object o2) {}
- tiene que devolver -ve si o1 tiene que venir antes que o2
- tiene que devolver +ve si o1 tiene que venir después de o2
- tiene que devolver 0 si o1 es igual a o2
Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA