logo

Lexikographische Ordnung Java

Der Begriff „lexikografische Reihenfolge“ ist ein mathematischer Begriff, der unter Namen bekannt ist: lexikalische Reihenfolge, lexikografisches Produkt, alphabetische Reihenfolge oder Wörterbuchreihenfolge.

In diesem Abschnitt werden das Thema lexikografische Ordnung, ihre Definition und andere detaillierte Informationen behandelt. Danach lernen wir, wie man das Konzept der lexikografischen Ordnung im verwendet Java-Programmiersprache .

Definition der lexikografischen Ordnung

Lexikographische Ordnung oder Lexikographie in der Mathematik ist eine Verallgemeinerung der alphabetischen Reihenfolge der Wörterbücher auf die Folgen der geordneten Symbole oder Elemente einer vollständig geordneten Liste. Der Begriff lexikographische Ordnung wird durch das Wort „Lexikon“ motiviert. Lexikon ist die Menge der Wörter, die in einigen anderen Sprachen verwendet werden und eine konventionelle Reihenfolge aufweisen. Somit ist die lexikografische Reihenfolge eine Möglichkeit zur Formalisierung der Wortreihenfolge, bei der die Reihenfolge der zugrunde liegenden Symbole angegeben wird.

In der Programmierung wird die lexikografische Reihenfolge im Volksmund als bezeichnet Wörterbuchreihenfolge und wird verwendet, um ein String-Array zu sortieren, zwei Strings zu vergleichen oder Array-Elemente zu sortieren. Es wird ganz einfach, Elemente lexikalisch zu sortieren. Dies liegt daran, dass die lexikografische Ordnung mehrere Varianten und Verallgemeinerungen aufweist, in denen:

  • Eine Variante ist auf Sequenzen unterschiedlicher Länge anwendbar, da zuvor unter Berücksichtigung der einzelnen Elemente die Längen der Sequenzen verglichen werden.
  • Die zweite Variante wird verwendet, um Teilmengen einer gegebenen endlichen Menge zu ordnen. Dies geschieht, indem der endlichen Menge eine Gesamtordnung zugewiesen wird. Anschließend werden Teilmengen in aufsteigende Sequenzen umgewandelt, auf die die lexikografische Reihenfolge angewendet wird.
  • Die Verallgemeinerung bezieht sich auf die kartesische Produktfolge teilweise geordneter Mengen, und eine solche Folge ist genau dann eine Gesamtordnung, wenn jeder Faktor des kartesischen Produkts vollständig geordnet ist.

Den formalen Begriff der lexikografischen Ordnung verstehen

  • Um den formalen Begriff der lexikographischen Ordnung zu verstehen:
  • Es beginnt mit einer endlichen Menge A, die als Alphabet bekannt ist und vollständig sequenziert ist. Es bedeutet weiterhin, dass für a und b (zwei beliebige Symbole, die unterschiedlich und nicht gleich sind) in A entweder a
  • Hier sind die Wörter von A die endliche Folge von Symbolen aus A und umfassen Wörter der Länge 1, die ein einzelnes Symbol enthalten, Wörter der Länge 2 mit zwei Symbolen, und für Wörter der Länge drei sind es 3 und so weiter. Mit freundlichen Grüßen, es enthält auch die leere Sequenz ? enthält überhaupt keine Symbole. Somit kann die lexikografische Reihenfolge für die endliche Menge A wie folgt beschrieben werden:
  • Angenommen, für die beiden unterschiedlichen Welten gleicher Länge gilt a=a1A2…Akund b=b1B2…Bkgegeben ist. Hier hängt die Reihenfolge zweier Wörter in erster Linie von der alphabetischen Reihenfolge der Symbole i ab, wobei zwei Wörter variieren, wenn man vom Anfang der Wörter an zählt, d. h. die Bedingung a erfüllen ich i innerhalb der Reihenfolge des Alphabets A.
  • Wenn zwei Wörter unterschiedlich lang sind, wird in der üblichen lexikografischen Reihenfolge das Wort mit der kürzeren Länge mit Leerzeichen am Ende aufgefüllt, bis beide Wörter die gleiche Länge haben, und dann werden die Wörter verglichen.

Lexikographisches in Java implementieren

Wie oben erläutert, kann diese lexikografische Reihenfolge entweder zum Vergleichen zweier Zeichenfolgen oder zum Sortieren der Elemente verwendet werden. Hier werden wir beide Methoden besprechen und jede implementieren.

Elemente in lexikographischer Reihenfolge sortieren

Das Anordnen von Wörtern in der richtigen Reihenfolge wird als bezeichnet lexikographische Ordnung oder auch bekannt als Wörterbuchreihenfolge . Dies bedeutet, dass bei der Anwendung der lexikografischen Reihenfolge die Wörter alphabetisch entsprechend ihren Komponentenalphabeten geordnet werden. Zum Sortieren eines String-Arrays in lexikografischer Reihenfolge stehen uns die folgenden zwei Methoden zur Verfügung:

Methode 1: Anwenden einer beliebigen Sortiermethode

Nachfolgend finden Sie den Beispielcode, der uns verdeutlicht, wie wir Elemente in lexikografischer Reihenfolge sortieren können:

 public class Main { public static void main(String[] args) { String[] name = { &apos;John&apos;,&apos;Remo&apos;,&apos;Mixy&apos;,&apos;Julie&apos;,&apos;Ronny&apos;}; int n = 5; System.out.println(&apos;Before Sorting&apos;); 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 + &apos; &apos;); System.out.println(); } public static void main(String[] args) { String arr[] = {&apos;John&apos;,&apos;Harry&apos;,&apos;Emlie&apos;,&apos;Ronny&apos;,&apos;Julie&apos;,&apos;Mary&apos; }; 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&apos;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 = &apos;String&apos;, str2 = &apos;Comparison&apos;; 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 = &apos;Red&apos;; String secondString = &apos;Red&apos;; String thirdString = &apos;Green&apos;; String fourthString = &apos;Yellow&apos;; String fifthString = &apos;REdGreen&apos;; System.out.println(&apos;Comparing two strings lexicographically by user defined function&apos;); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the secondString (&apos;+secondString+&apos;) returns: &apos;); System.out.println(compareString(firstString, secondString)); System.out.print(&apos;
Compairing secondString (&apos;+secondString+&apos;) to the thirdString (&apos;+thirdString+&apos;) returns: &apos;); System.out.println(compareString(secondString, thirdString)); System.out.print(&apos;
Compairing thirdString (&apos;+thirdString+&apos;) to the fourthString (&apos;+fourthString+&apos;) returns: &apos;); System.out.println(compareString(thirdString, fourthString)); System.out.print(&apos;
Compairing fourthString (&apos;+fourthString+&apos;) to the firstString (&apos;+firstString+&apos;) returns: &apos;); System.out.println(compareString(fourthString, firstString)); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the fifthString (&apos;+fifthString+&apos;) returns: &apos;); 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;>

Beim Ausführen der obigen Ausgabe erhielten wir die unten gezeigte Ausgabe:

Lexikographische Ordnung Java

Vergleichen zweier Zeichenfolgen mithilfe der lexikografischen Reihenfolge in Java

Für den Vergleich zweier Zeichenfolgen mithilfe der lexikografischen Reihenfolge stehen uns die folgenden zwei Methoden zur Verfügung:

Verwendung der Methode „compareTo()“.

Beginnen wir der Reihe nach:

Verwendung der Methode „compareTo()“.

Nachfolgend finden Sie eine Beispielimplementierung, anhand derer wir lexikographisch mit Zeichenfolgen vergleichen können:

 import java.lang.*; public class StringExample { public static void main(String[] args) { String str1 = &apos;String&apos;, str2 = &apos;Comparison&apos;; 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 = &apos;Red&apos;; String secondString = &apos;Red&apos;; String thirdString = &apos;Green&apos;; String fourthString = &apos;Yellow&apos;; String fifthString = &apos;REdGreen&apos;; System.out.println(&apos;Comparing two strings lexicographically by user defined function&apos;); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the secondString (&apos;+secondString+&apos;) returns: &apos;); System.out.println(compareString(firstString, secondString)); System.out.print(&apos;
Compairing secondString (&apos;+secondString+&apos;) to the thirdString (&apos;+thirdString+&apos;) returns: &apos;); System.out.println(compareString(secondString, thirdString)); System.out.print(&apos;
Compairing thirdString (&apos;+thirdString+&apos;) to the fourthString (&apos;+fourthString+&apos;) returns: &apos;); System.out.println(compareString(thirdString, fourthString)); System.out.print(&apos;
Compairing fourthString (&apos;+fourthString+&apos;) to the firstString (&apos;+firstString+&apos;) returns: &apos;); System.out.println(compareString(fourthString, firstString)); System.out.print(&apos;
Compairing firstString (&apos;+firstString+&apos;) to the fifthString (&apos;+fifthString+&apos;) returns: &apos;); 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)>