Articles

Kolejność leksykograficzna

Posted on

Twoja przeglądarka nie obsługuje HTML 5 Canvas. Spróbuj w Chrome.

Aby uporządkować elementy, musi istnieć sposób na porównanie dwóch elementów. W przypadku ciągów znaków, zwykłym porządkiem jest porządek leksykograficzny. Jest to kolejność słownikowa, z tą różnicą, że wszystkie wielkie litery poprzedzają wszystkie małe litery. Takiej kolejności używa metoda compareTo() klasy String.

Dwa ciągi są równe leksykograficznie, jeśli są tej samej długości i zawierają te same znaki w tych samych pozycjach. W tym przypadku, stringA.compareTo( stringB ) zwraca 0.

W przeciwnym razie stringA.compareTo( stringB ) zwraca wartość ujemną, jeśli StringA występuje jako pierwszy i wartość dodatnią, jeśli StringB występuje jako pierwszy.

Pomoc dla pamięci: pomyśl o ciągach w słowniku jako ułożonych od najmniejszego do największego. Wtedy stringA - stringB dałby wartość ujemną, gdyby stringA pojawił się przed StringB.

Aby określić, który ciąg przychodzi jako pierwszy, porównaj odpowiadające sobie znaki dwóch ciągów od lewej do prawej. Pierwszy znak, w którym oba łańcuchy się różnią, określa, który łańcuch jest pierwszy. Znaki są porównywane przy użyciu zestawu znaków Unicode. Wszystkie wielkie litery występują przed małymi literami. Jeżeli dwie litery są tej samej wielkości, to do ich porównania używana jest kolejność alfabetyczna.

Jeżeli dwa łańcuchy zawierają te same znaki w tych samych pozycjach, to najkrótszy łańcuch jest porównywany jako pierwszy.


.

Relacja stringA.compareTo( stringB )
stringA Less Than stringB Negative Integer
stringA Równy stringB Zero
stringA Większy Than stringB Positive Integer


Wyrażenie Ocena Wyjaśnienie
„Zebra”.compareTo(„ant”) Negative Integer upper case 'Z' comes before lower case 'a'
„Apple”.compareTo(„apple”) Negative Integer upper case 'A' comes before lower case 'a'
„apple”.compareTo(„orange”) Negative Integer ’a' comes before 'o'
„maple”.compareTo(„morning”) Negative Integer ’a' comes before 'o'
„apple”.compareTo(„apple”) Zero tej samej długości, te same znaki w tych samych pozycjach
„orange”.compareTo(„apple”) Positive Integer ’o' comes after 'a'
„applecart”.compareTo(„apple”) Positive Integer dłuższy ciąg „applecart” comes after „apple”
„albatross”.compareTo(„albany”) Positive Integer ’t' comes after 'n'


To jest nieco mylące. Zauważmy, że stringA.compareTo( stringB ) zwraca ujemną liczbę całkowitą, gdy stringA i stringB są w prawidłowej kolejności.

.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *