La classe de cadena no té cap mètode que ordeni directament una cadena, però podem ordenar una cadena aplicant altres mètodes un darrere l'altre. La cadena és una seqüència de caràcters. A java, els objectes de String són immutables, cosa que significa una constant i no es poden canviar un cop creats.
Creació d'una cadena
Hi ha dues maneres de crear una cadena a Java:
- Cadena literal
String s = techcodeview.com;>
- Utilitzant nou paraula clau
String s = new String (techcodeview.com);>
Nota: Com sabem que String és immutable a java, per tant, en el tercer pas hem de crear una cadena nova.
Mètodes:
Existeixen dos mètodes amb els quals podem ordenar qualsevol cadena en java alfabèticament
com imprimir java
- Sense utilitzar el mètode sort().
- Mitjançant l'ús de mètode sort().
Il·lustració:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Ara parlem dels mètodes i implementem el mateix.
Mètode 1: Sense utilitzar el mètode sort().
Aquí establirem un enfocament per ordenar una cadena sense utilitzar cap lògica predefinida. Per tant, també es converteix en un enfocament important des d'una visió perceptiva de l'entrevista.
com obrir un fitxer amb java
Procediment:
- Converteix string en una matriu amb l'ajuda del mètode toCharArray() de la classe String
- Ara feu servir bucles imbricats per comprovar si hi ha elements d'intercanvi d'una matriu.
- Imprimeix aquests elements de matriu de caràcters.
Exemple
Java // Java program for Sorting a String without using any inbuilt sorting functions import java.io.*; class StringSort { //The Merge Function, handling the core compare & copy logic void merge(char arr[], int l, int m, int r) { int n1 = m - l + 1; int n2 = r - m; char L[] = new char[n1]; char R[] = new char[n2]; //Logic for backing up to temp arrays for (int i = 0; i < n1; ++i) L[i] = arr[l + i]; for (int j = 0; j < n2; ++j) R[j] = arr[m + 1 + j]; int i = 0, j = 0; int k = l; //Logic to compare and copy. The core Merge Logic of the Merge sort. while (i < n1 && j < n2) { if (L[i] <= R[j]) { arr[k] = L[i]; i++; } else { arr[k] = R[j]; j++; } k++; } //Logic to copy remaining elements of L[] while (i < n1) { arr[k] = L[i]; i++; k++; } //Logic to copy remaining elements of R[] while (j < n2) { arr[k] = R[j]; j++; k++; } } //The main Merge Sort function from where the sorting begins void mergeSort(char arr[], int l, int r) { if (l < r) { // Find the middle point int m = l + (r - l) / 2; // Sort first and second halves mergeSort(arr, l, m); mergeSort(arr, m + 1, r); // Merge the sorted halves merge(arr, l, m, r); } } // A utility function to print char array of size n static void printArray(char arr[]) { int n = arr.length; for (int i = 0; i < n; ++i) System.out.print(arr[i] + ' '); System.out.println(); } // Driver code public static void main(String args[]) { String inputString = 'geeksforgeeks'; char arr[] = inputString.toCharArray(); System.out.println('Given array is'); printArray(arr); StringSort ob = new StringSort(); ob.mergeSort(arr, 0, arr.length - 1); System.out.println('
Sorted array is'); printArray(arr); } } /* This code is contributed by Nikhil B */> Sortida:
eeeefggkkorss>
Complexitat temporal : O(n * log n). (on 'n' és la mida de la cadena d'entrada.)
Mètode 2: per utilitzant el mètode sort().
2A Mitjançant l'ús de mètode d'ordenació () classificació natural
Procediment:
- La lògica principal és mètode toCharArray(). de la classe String sobre la cadena d'entrada per crear una matriu de caràcters per a la cadena d'entrada.
- Ara utilitza Arrays.sort(car c[]) mètode per ordenar la matriu de caràcters.
- Utilitzeu el constructor de classe String per crear una cadena ordenada a partir d'una matriu de caràcters.
Exemple 1
protocol udpJava
// 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); } }> Sortida
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B Per utilitzant el mètode d'ordenació () Classificació personalitzada
Arrays.sort(car c[]) mètode d'ordenació dels caràcters en funció del seu valor ASCII, podem definir el nostre costum Comparador per ordenar una cadena.
Il·lustració:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procediment:
- Converteix la cadena d'entrada a Personatge matriu. No hi ha un mètode directe per fer-ho. Utilitzarem el bucle for per omplir la matriu.
- Ús Arrays.sort(T [ ], Comparador c) mètode per ordenar la matriu de caràcters. Per a això, hem d'haver d'implementar compara () mètode basat en el nostre comportament d'ordenació personalitzada.
- Ara podem utilitzar StringBuilder per convertir la matriu de caràcters a String.
Exemple 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() { // Mètode 2 // Per comparar caràcters @Override public int compare(Caràcter c1, Caràcter c2) { // Ignorant el retorn de majúscules i minúscules Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); }}); // Utilitzant StringBuilder per convertir la matriu de caràcters a // String StringBuilder sb = new StringBuilder(tempArray.length); for (Caracter c: tempArray) sb.append(c.charValue()); retornar sb.toString(); } // Mètode 3 // Mètode del controlador principal public static void main(String[] args) { // Cadena d'entrada personalitzada String inputString = 'techcodeview.com'; // Crida al mètode 1 per ordenar la cadena d'entrada // i emmagatzemar en una cadena String outputString = sortString(inputString); // Imprimeix i mostra les cadenes d'entrada i sortida System.out.println('Cadena d'entrada: ' + cadena d'entrada); System.out.println('Cadena de sortida: ' + cadena de sortida); } }>>>
Sortida Input String : techcodeview.com Output String : eeeefGGkkorss>
Nota:
han de tornar -ve si o1 ha d'anar abans que o2 han de tornar +ve si o1 ha de venir després de o2 Cal tornar 0 si o1 és igual a o2