De term Lexicografische volgorde is een wiskundige term die bekend staat onder namen: lexicale volgorde, lexicografisch (al) product, alfabetische volgorde of woordenboekvolgorde.
In dit gedeelte wordt het onderwerp lexicografische volgorde, de definitie ervan en andere gedetailleerde informatie behandeld. Daarna zullen we leren hoe we het concept van lexicografische volgorde kunnen gebruiken in de Java-programmeertaal .
Lexicografische volgorde definiëren
Lexicografische volgorde of lexicografisch in de wiskunde is een generalisatie van de alfabetische volgorde van de woordenboeken naar de reeksen van de geordende symbolen of elementen van een volledig geordende lijst. De term lexicografische volgorde wordt gemotiveerd door het woord 'lexicon'. Lexicon is de reeks woorden die in sommige andere talen wordt gebruikt en heeft een conventionele volgorde. Lexicografische volgorde is dus een manier om de woordvolgorde te formaliseren waarbij de volgorde van de onderliggende symbolen wordt gegeven.
Bij het programmeren staat de lexicografische volgorde in de volksmond bekend als Woordenboekvolgorde en wordt gebruikt om een stringarray te sorteren, twee strings te vergelijken of array-elementen te sorteren. Het wordt vrij eenvoudig om elementen lexicaal te sorteren. Het komt omdat de lexicografische volgorde verschillende varianten en generalisaties kent waarin:
Java Lambda-expressies
- Eén variant is toepasbaar op de reeksen van verschillende lengtes, aangezien voordat de specifieke elementen in ogenschouw worden genomen, de lengtes van de reeksen worden vergeleken.
- De tweede variant wordt gebruikt om subsets van een gegeven eindige set te ordenen. Dit gebeurt door een totale volgorde toe te kennen aan de eindige verzameling. Vervolgens zet het subsets om in toenemende reeksen waarop de lexicografische volgorde wordt toegepast.
- De generalisatie verwijst naar de cartesiaanse productreeks van gedeeltelijk geordende sets, en een dergelijke reeks is een totale volgorde, als en slechts als elke factor van het cartesiaanse product volledig is geordend.
Het formele begrip van lexicografische volgorde begrijpen
- Om het formele begrip van de lexicografische volgorde te begrijpen:
- Het begint met een eindige verzameling A, die bekend staat als het alfabet en volledig in volgorde is. Het betekent verder dat voor a en b (elke twee symbolen die verschillend en niet hetzelfde zijn) in A, ofwel a
- Hier zijn de woorden van A de eindige reeks symbolen van A en omvatten woorden met lengte 1 die een enkel symbool bevatten, woorden met lengte 2 met twee symbolen, en voor woorden met lengte drie is dit 3, enzovoort. Met vriendelijke groet, het bevat ook de lege reeks? helemaal geen symbolen bevatten. De lexicografische volgorde voor de eindige verzameling A kan dus worden omschreven als:
- Stel dat voor de twee verschillende werelden van dezelfde lengte a=a1A2…Aken b=b1B2…Bkis gegeven. Hier hangt de volgorde van twee woorden af van de alfabetische volgorde van de symbolen in de eerste plaats i, waarbij twee woorden variëren bij het tellen vanaf het begin van de woorden, dat wil zeggen dat ze voldoen aan de voorwaarde a i i in de volgorde van het alfabet A.
- Als twee woorden in lengte variëren, wordt het woord met de kortere lengte in de gebruikelijke lexicografische volgorde opgevuld met spaties aan het einde totdat beide woorden even lang zijn, en vervolgens worden de woorden vergeleken.
Lexicografisch implementeren in Java
Zoals hierboven besproken kan die lexicografische volgorde worden gebruikt voor het vergelijken van twee strings of het sorteren van de elementen. Hier zullen we beide methoden bespreken en ze allemaal implementeren.
Elementen sorteren in lexicografische volgorde
Het ordenen van woorden in volgorde staat bekend als lexicografische volgorde of ook bekend als Woordenboekvolgorde . Het betekent dat bij het toepassen van de lexicografische volgorde de woorden alfabetisch worden geordend volgens hun samenstellende alfabetten. Voor het sorteren van een stringarray in lexicografische volgorde hebben we de volgende twee methoden:
Methode 1: Een willekeurige sorteermethode toepassen
boom- en grafentheorie
Hieronder vindt u de voorbeeldcode die ons laat begrijpen hoe we elementen in lexicografische volgorde kunnen sorteren:
public class Main { public static void main(String[] args) { String[] name = { 'John','Remo','Mixy','Julie','Ronny'}; int n = 5; System.out.println('Before Sorting'); for(int i = 0; i <n; i++) { system.out.println(name[i]); } for(int i="0;" < n-1; ++i) for (int j="i" + 1; 0) string temp="name[i];" name[i]="name[j];" name[j]="temp;" system.out.println(' after performing lexicographical order: '); n; pre> <p> <strong>Code Explanation:</strong> </p> <p>In the above code, we have created a class Main within which the main () method is created.</p> <ul> <li>A string has been initialized, holding some values to it, and each word will get printed as per for loop.</li> <li>Then, we have implemented the main logic within another for loop with the help of which we can form the lexicographical order of the words given.</li> <li>Finally, via for loop, the arranged words are printed on the screen.</li> </ul> <p> <strong>On executing the above example code, we got the following output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java.webp" alt="Lexicographical Order Java"> <p>From the output, we can analyze that the given sequence of the words was not in alphabetical order but after applying the lexicographical order code, we can see that every word is sequenced now in alphabetical order.</p> <p> <strong>Method 2: Applying sort () function</strong> </p> <p>The sort () method is available in the Arrays class within the util package.</p> <p>Below is the example code given that will let us understand that how we can perform sorting on elements in Lexicographical order:</p> <pre> import java.io.*; import java.util.Arrays; class Main { public static void printArray(String str[]) { for (String string : str) System.out.print(string + ' '); System.out.println(); } public static void main(String[] args) { String arr[] = {'John','Harry','Emlie','Ronny','Julie','Mary' }; Arrays.sort(arr,String.CASE_INSENSITIVE_ORDER); printArray(arr); } } </pre> <p> <strong>On executing the above output, we got the below-shown output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-2.webp" alt="Lexicographical Order Java"> <h3>Comparing two strings using Lexicographical order in Java</h3> <p>For comparing two strings using Lexicographical order, we have the following two methods:</p> <p> <strong>Using compareTo () method</strong> </p> <p>Let's begin one by one:</p> <p> <strong>Using compareTo () method</strong> </p> <p>Below is an example implementation by which we can compare to strings lexicographically:</p> <pre> import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = 'String', str2 = 'Comparison'; int get_val = str1.compareTo(str2); if (get_val <0) { system.out.println('str1 is greater than str2'); } else if (get_val="=" 0) equal to less < pre> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a class StringExample where we have implemented the main () method.</li> <li>We have initialized two strings, i.e., str1 and str2.</li> <li>Next, using the compareTo () method, we have compared the strings str1 and str2.</li> <li>After it, if the get_val value is found less than 0, it means str1 is greater than str2.</li> <li>Else if the get_val value is equal to 0, it means both str1 and str2 strings are equal.</li> <li>Else, both the strings str1 is less than str2.</li> </ul> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-3.webp" alt="Lexicographical Order Java"> <p> <strong>By creating a user-defined function</strong> </p> <p>Below we have created a user-defined function using which we can compare two strings lexicographically. The code is as follows:</p> <pre> public class StringExample { public static void main(String[] args) { String firstString = 'Red'; String secondString = 'Red'; String thirdString = 'Green'; String fourthString = 'Yellow'; String fifthString = 'REdGreen'; System.out.println('Comparing two strings lexicographically by user defined function'); System.out.print(' Compairing firstString ('+firstString+') to the secondString ('+secondString+') returns: '); System.out.println(compareString(firstString, secondString)); System.out.print(' Compairing secondString ('+secondString+') to the thirdString ('+thirdString+') returns: '); System.out.println(compareString(secondString, thirdString)); System.out.print(' Compairing thirdString ('+thirdString+') to the fourthString ('+fourthString+') returns: '); System.out.println(compareString(thirdString, fourthString)); System.out.print(' Compairing fourthString ('+fourthString+') to the firstString ('+firstString+') returns: '); System.out.println(compareString(fourthString, firstString)); System.out.print(' Compairing firstString ('+firstString+') to the fifthString ('+fifthString+') returns: '); System.out.println(compareString(firstString, fifthString)); } public static int compareString(String str, String argString) { int lim= Math.min(str.length(), argString.length()); int k=0; while(k<lim) { if(str.charat(k)!="argString.charAt(k))" return (int) str.charat(k)- argstring.charat(k); } k++; str.length() - argstring.length(); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-4.webp" alt="Lexicographical Order Java"> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a Java class where we have initialized five strings.</li> <li>Next, we have compared the first string with the second string, the second to the third-string, and so on..</li> <li>For making the comparison, we have created a user-defined function compareString () whereby comparing the length and each character of the strings, and we got the results.</li> </ul> <p>Therefore, in this way, we can make use of the lexicographical order in Java for performing such tasks.</p> <hr></lim)></pre></0)></pre></n;>
Bij het uitvoeren van de bovenstaande uitvoer kregen we de hieronder weergegeven uitvoer:
Vergelijking van twee strings met behulp van lexicografische volgorde in Java
Voor het vergelijken van twee tekenreeksen met behulp van de lexicografische volgorde hebben we de volgende twee methoden:
Met behulp van de methode CompareTo ().
Laten we één voor één beginnen:
Met behulp van de methode CompareTo ().
Hieronder vindt u een voorbeeldimplementatie waarmee we lexicografisch met strings kunnen vergelijken:
import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = 'String', str2 = 'Comparison'; int get_val = str1.compareTo(str2); if (get_val <0) { system.out.println(\'str1 is greater than str2\'); } else if (get_val="=" 0) equal to less < pre> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a class StringExample where we have implemented the main () method.</li> <li>We have initialized two strings, i.e., str1 and str2.</li> <li>Next, using the compareTo () method, we have compared the strings str1 and str2.</li> <li>After it, if the get_val value is found less than 0, it means str1 is greater than str2.</li> <li>Else if the get_val value is equal to 0, it means both str1 and str2 strings are equal.</li> <li>Else, both the strings str1 is less than str2.</li> </ul> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-3.webp" alt="Lexicographical Order Java"> <p> <strong>By creating a user-defined function</strong> </p> <p>Below we have created a user-defined function using which we can compare two strings lexicographically. The code is as follows:</p> <pre> public class StringExample { public static void main(String[] args) { String firstString = 'Red'; String secondString = 'Red'; String thirdString = 'Green'; String fourthString = 'Yellow'; String fifthString = 'REdGreen'; System.out.println('Comparing two strings lexicographically by user defined function'); System.out.print(' Compairing firstString ('+firstString+') to the secondString ('+secondString+') returns: '); System.out.println(compareString(firstString, secondString)); System.out.print(' Compairing secondString ('+secondString+') to the thirdString ('+thirdString+') returns: '); System.out.println(compareString(secondString, thirdString)); System.out.print(' Compairing thirdString ('+thirdString+') to the fourthString ('+fourthString+') returns: '); System.out.println(compareString(thirdString, fourthString)); System.out.print(' Compairing fourthString ('+fourthString+') to the firstString ('+firstString+') returns: '); System.out.println(compareString(fourthString, firstString)); System.out.print(' Compairing firstString ('+firstString+') to the fifthString ('+fifthString+') returns: '); System.out.println(compareString(firstString, fifthString)); } public static int compareString(String str, String argString) { int lim= Math.min(str.length(), argString.length()); int k=0; while(k<lim) { if(str.charat(k)!="argString.charAt(k))" return (int) str.charat(k)- argstring.charat(k); } k++; str.length() - argstring.length(); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/java-tutorial/62/lexicographical-order-java-4.webp" alt="Lexicographical Order Java"> <p> <strong>Code Explanation:</strong> </p> <ul> <li>We have created a Java class where we have initialized five strings.</li> <li>Next, we have compared the first string with the second string, the second to the third-string, and so on..</li> <li>For making the comparison, we have created a user-defined function compareString () whereby comparing the length and each character of the strings, and we got the results.</li> </ul> <p>Therefore, in this way, we can make use of the lexicographical order in Java for performing such tasks.</p> <hr></lim)></pre></0)>0)>