Stringklassen har ikke nogen metode, der direkte sorterer en streng, men vi kan sortere en streng ved at anvende andre metoder efter hinanden. Strengen er en sekvens af tegn. I java er objekter af String uforanderlige, hvilket betyder en konstant og kan ikke ændres, når de først er oprettet.
Oprettelse af en streng
Der er to måder at oprette en streng i Java:
- Streng bogstavelig
String s = techcodeview.com;>
- Ved brug af ny søgeord
String s = new String (techcodeview.com);>
Bemærk: Som vi ved, at String er uforanderlig i java, derfor skal vi i tredje trin oprette en ny streng.
Metoder:
Der findes to metoder, hvormed vi kan sortere enhver streng i java alfabetisk
java, hvordan man tilsidesætter
- Uden at bruge sort() metoden
- Ved at bruge sort() metode
Illustration:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Lad os nu diskutere metoder og implementere det samme.
Metode 1: Uden at bruge sort() metoden
Her vil vi lægge en tilgang til at sortere en streng uden at bruge nogen foruddefineret logik. Så det bliver også en vigtig tilgang fra et interviewopfattende synspunkt.
java til loop-typer
Procedure:
- Konverter streng til et array ved hjælp af toCharArray()-metoden i String-klassen
- Brug nu indlejrede løkker til at kontrollere, om der er byttet om elementer i et array.
- Udskriv disse tegnarray-elementer.
Eksempel
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 */>
Produktion:
eeeefggkkorss>
Tidskompleksitet : O(n * log n). (hvor 'n' er størrelsen på inputstrengen.)
Metode 2: Ved bruger sort() metode
2A Ved at bruge sort() metode- naturlig sortering
Procedure:
- Hovedlogikken er at toCharArray() metode af String-klassen over inputstrengen for at oprette et tegnarray for inputstrengen.
- Brug nu Arrays.sort(char c[]) metode til at sortere tegnarray.
- Brug String-klassekonstruktøren til at oprette en sorteret streng fra et char-array.
Eksempel 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); } }>
Produktion
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B af bruger sort() metode- Brugerdefineret sortering
Arrays.sort(char c[]) metodesorteringstegn baseret på deres ASCII-værdi, kan vi definere vores brugerdefinerede Komparator at sortere en streng.
hurtig sortering java
Illustration:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedure:
- Konverter inputstreng til Karakter array. Der er ingen direkte metode til at gøre det. Vi vil bruge for loop til at fylde arrayet.
- Brug Arrays.sort(T [ ], komparator c) metode til at sortere Character array. Til dette er vi nødt til at implementere sammenligne() metode baseret på vores tilpassede sorteringsadfærd.
- Nu kan vi bruge StringBuilder til at konvertere Character-arrayet til String.
Eksempel 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() { // Metode 2 // For at sammenligne tegn @Override public int compare(Character c1, Character c2) { // Ignorerer store og små bogstaver Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // Brug af StringBuilder til at konvertere Character array til // String StringBuilder sb = new StringBuilder(tempArray.length); for (tegn c: tempArray) sb.append(c.charValue()); returner sb.toString(); } // Metode 3 // Hoveddrivermetode public static void main(String[] args) { // Custom input string String inputString = 'techcodeview.com'; // Kalder metode 1 for at sortere inputstreng // og gemme i en streng String outputString = sortString(inputString); // Udskriv og vis input- og output-strengene System.out.println('Input String : ' + inputString); System.out.println('Outputstreng: ' + outputstreng); } }>
Produktion
Input String : techcodeview.com Output String : eeeefGGkkorss>
Bemærk:
public int compare(Object o1, Object o2) {}>
- skal returnere -ve hvis o1 skal komme før o2
- skal returnere +ve hvis o1 skal komme efter o2
- skal returnere 0, hvis o1 er lig med o2