Java: Jak działa compare?
ostatnio natrafiłem na implementacje Compare Stringów. Fajnie zobaczyć jak działa. W skrócie: Porównuje konkretne znaki Stringa i zwraca różnice w tablicy ascii, czyli int.
Jeżeli zwracany int = 0, to znaczy, że są równe. Dla każdego innego nie są równe. Oto implementacja:
Fajne, nie prawdasz? Jedyne co nie było dla mnie zrozumiałem, to skąd się bierze value? A no stąd, że compare jest wywoływane na czymś, i to jest wartość tego czegoś.
A, ze nie zgłasza błędu, to znaczy, że pewnie jakiś rodzic ma to zadeklarowane - pewnie jakaś klasa abstrakcyjna, albo inny interfejs - i dlatego sobie komfortowo to pobiera .
Jeżeli zwracany int = 0, to znaczy, że są równe. Dla każdego innego nie są równe. Oto implementacja:
public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } return len1 - len2; }
Fajne, nie prawdasz? Jedyne co nie było dla mnie zrozumiałem, to skąd się bierze value? A no stąd, że compare jest wywoływane na czymś, i to jest wartość tego czegoś.
A, ze nie zgłasza błędu, to znaczy, że pewnie jakiś rodzic ma to zadeklarowane - pewnie jakaś klasa abstrakcyjna, albo inny interfejs - i dlatego sobie komfortowo to pobiera .
Komentarze
Prześlij komentarz