De klasse string heeft geen enkele methode die een string rechtstreeks sorteert, maar we kunnen een string sorteren door andere methoden achter elkaar toe te passen. De string is een reeks tekens. In Java zijn objecten van String onveranderlijk, wat een constante betekent en niet meer kan worden gewijzigd nadat ze zijn gemaakt.
Een tekenreeks maken
Er zijn twee manieren om een string in Java te maken:
- Tekenreeks letterlijk
String s = techcodeview.com;>
- Gebruik makend van nieuw trefwoord
String s = new String (techcodeview.com);>
Opmerking: Zoals we weten is String dat wel onveranderlijk in Java, daarom moeten we in de derde stap een nieuwe string maken.
Methoden:
Er bestaan twee methoden waarmee we elke tekenreeks in Java alfabetisch kunnen sorteren
statisch trefwoord in Java
- Zonder de methode sort() te gebruiken
- Door gebruik te maken van de sort() methode
Illustratie:
Input string : 'geeksforgeeks' Output string : 'eeeefggkkorss'>
Laten we nu methoden bespreken en dezelfde implementeren.
Methode 1: Zonder de methode sort() te gebruiken
Hier zullen we een aanpak uiteenzetten om een string te sorteren zonder gebruik te maken van enige vooraf gedefinieerde logica. Het wordt dus ook een belangrijke benadering vanuit de perceptie van een interview.
script uitvoerbaar maken
Procedure:
- Converteer string naar een array met behulp van de toCharArray() -methode van de String-klasse
- Gebruik nu geneste lussen om te controleren of er elementen van een array worden verwisseld.
- Druk deze karakterarray-elementen af.
Voorbeeld
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 */>
Uitgang:
eeeefggkkorss>
Tijdcomplexiteit : O(n * logboek n). (waarbij ‘n’ de grootte van de invoerreeks is.)
Methode 2: Door de ... gebruiken sort() methode
2A Door gebruik te maken van de sort() methode- natuurlijke sortering
Procedure:
- De belangrijkste logica is om toCharArray()-methode van de klasse String over de invoerreeks om een tekenarray voor de invoerreeks te maken.
- Gebruik nu Arrays.sort(char c[]) methode om karakterarray te sorteren.
- Gebruik de klasseconstructor String om een gesorteerde tekenreeks te maken op basis van een char-array.
voorbeeld 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); } }>
Uitvoer
Input String : geeksforgeeks Output String : eeeefggkkorss>
2B Door de ... gebruiken sort() methode- Aangepaste sortering
Arrays.sort(char c[]) methode karakters sorteren op basis van hun ASCII-waarde, kunnen we onze gewoonte definiëren Comparator om een string te sorteren.
csv-bestand java lezen
Illustratie:
Input String : techcodeview.com Output String : eeeefGGkkorss>
Procedure:
- Converteer invoertekenreeks naar Karakter reeks. Er is geen directe methode om dit te doen. We zullen for loop gebruiken om de array te vullen.
- Gebruik Arrays.sort(T [ ], Comparator c) methode om karakterarray te sorteren. Hiervoor moeten we het implementeren vergelijken() methode gebaseerd op ons aangepaste sorteergedrag.
- Nu kunnen we StringBuilder gebruiken om de Character-array naar String te converteren.
Voorbeeld 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() {/ // Methode 2 // Tekens vergelijken @Override public int Compare(Character c1, Character c2) {// Hoofdletterretour negeren Character.compare( Character.toLowerCase(c1), Character.toLowerCase(c2)); } }); // StringBuilder gebruiken om karakterarray te converteren naar // String StringBuilder sb = new StringBuilder(tempArray.length); for (Teken c: tempArray) sb.append(c.charValue()); retourneer sb.toString(); } // Methode 3 // MAin-stuurprogrammamethode public static void main(String[] args) {// Aangepaste invoerreeks String inputString = 'techcodeview.com'; // Roep methode 1 aan om invoerstring te sorteren // en op te slaan in een string String outputString = sortString(inputString); // Druk de invoer- en uitvoerreeksen af en toon deze System.out.println('Input String: ' + inputString); System.out.println('Uitvoerreeks: ' + uitvoerString); } }>
Uitvoer
Input String : techcodeview.com Output String : eeeefGGkkorss>
Opmerking:
public int compare(Object o1, Object o2) {}>
- moet -ve teruggeven als o1 vóór o2 moet komen
- moet +ve retourneren als o1 na o2 moet komen
- moet 0 retourneren als o1 gelijk is aan o2