logo

Lexikografisk ordning Java

Termen lexikografisk ordning är en matematisk term känd under namn: lexikalisk ordning, lexikografisk(al) produkt, alfabetisk ordning eller ordboksordning.

hur man skapar en array i java

Detta avsnitt kommer att täcka ämnets lexikografiska ordning, dess definition och annan detaljerad information. Efter det kommer vi att lära oss hur man använder begreppet lexikografisk ordning i Java programmeringsspråk .

Definiera lexikografisk ordning

Lexikografisk ordning eller lexikografi i matematik är en generalisering av den alfabetiska sekvensen av ordböckerna till sekvenserna av de ordnade symbolerna eller elementen i en helt ordnad lista. Termen lexikografisk ordning motiveras av ordet 'lexikon'. Lexicon är den uppsättning ord som används i några av de andra språken och har en konventionell ordning. Lexikografisk ordning är alltså ett sätt att formalisera ordföljd där ordningen på de underliggande symbolerna anges.

Inom programmering kallas lexikografisk ordning i folkmun Ordboksordning och används för att sortera en strängmatris, jämföra två strängar eller sortera matriselement. Det blir ganska lätt att sortera element lexiskt. Det beror på att lexikografisk ordning har flera varianter och generaliseringar där:

  • En variant är applicerbar på sekvenser av olika längd, eftersom längder av sekvenserna jämförs med hänsyn till de speciella elementen.
  • Den andra varianten används i ordningsundermängder av en given finit mängd. Det gör det genom att tilldela en total ordning till den finita mängden. Sedan konverterar det delmängder till ökande sekvenser som den lexikografiska ordningen tillämpas på.
  • Generaliseringen hänvisar till den kartesiska produktsekvensen av delvis beställda uppsättningar, och en sådan sekvens är en total beställning, om och endast om varje faktor i den kartesiska produkten är helt beställd.

Förstå det formella begreppet lexikografisk ordning

  • För att förstå den formella föreställningen om den lexikografiska ordningen:
  • Det börjar med en ändlig mängd A, som kallas alfabetet och är helt sekvenserad. Det betyder vidare att för a och b (vilka som helst två symboler som är olika och inte likadana) i A, antingen a
  • Här är orden i A den ändliga sekvensen av symboler från A och inklusive ord av längd 1 som innehåller en enda symbol, ord av längd 2 med två symboler, och för ord med längd tre är det 3, och så vidare. När det gäller, inkluderar det också den tomma sekvensen ? håller inga symboler alls. Således kan den lexikografiska ordningen för den finita mängden A beskrivas som:
  • Antag, för de två olika världarna av samma längd, a=a1a2…akoch b=b1b2…bkär given. Här beror två ords ordning på den alfabetiska ordningen för symbolerna i första hand i där två ord varierar när man räknar från början av orden, d.v.s. uppfyller villkoret a i i i ordningen för alfabetet A.
  • Om två ord har varierat i längd, fyller den vanliga lexikografiska ordningen ordet med kortare längd med blanksteg i slutet tills båda orden blir lika långa, och sedan jämförs orden.

Implementering av Lexicography i Java

Som diskuterats ovan kan den lexikografiska ordningen användas antingen för att jämföra två strängar eller för att sortera elementen. Här kommer vi att diskutera båda metoderna och implementera var och en.

Sortering av element i lexikografisk ordning

Att ordna ord i ordning kallas lexikografisk ordning eller även känd som Ordboksordning . Det betyder att vid tillämpning av lexikografisk ordning ordnas orden alfabetiskt enligt deras ingående alfabet. För att sortera en strängarray i lexikografisk ordning har vi följande två metoder:

Metod 1: Använd valfri sorteringsmetod

Nedan är exempelkoden som ges som låter oss förstå hur vi kan utföra sortering på element i lexikografisk ordning:

 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;>

När vi körde ovanstående utdata fick vi utdata som visas nedan:

Lexikografisk ordning Java

Jämföra två strängar med hjälp av lexikografisk ordning i Java

För att jämföra två strängar med hjälp av lexikografisk ordning har vi följande två metoder:

Använder metoden compareTo ().

Låt oss börja en efter en:

java med swing

Använder metoden compareTo ().

Nedan är ett exempel på implementering som vi kan jämföra med strängar lexikografiskt:

 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)>