Ordenar una string en Java (2 formas diferentes)

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

  1. Sin usar el método sort()
  2. 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:

  1. Convierta una string en una array con la ayuda del método toCharArray() de la clase String
  2. Ahora use bucles anidados para verificar los elementos de intercambio de una array.
  3. 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:

  1. 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.
  2. Ahora use el método Arrays.sort(char c[]) para ordenar la array de caracteres.
  3. 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);
    }
}
Producción

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: 

  1. 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.
  2. 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.
  3. 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);
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *