Il codice seguente è in Classe String in java. Non capisco perché i caratteri di due stringhe diverse vengano confrontati con lo due volte. in un primo momento facendo il maiuscolo e se ciò fallisce facendo minuscole.Perché lo stesso carattere è comparato due volte cambiando il suo caso in MAIUSCOLO e poi in basso?
La mia domanda qui è, è necessario? Se sì, perché?
public static final Comparator<String> CASE_INSENSITIVE_ORDER
= new CaseInsensitiveComparator();
private static class CaseInsensitiveComparator
implements Comparator<String>, java.io.Serializable {
// use serialVersionUID from JDK 1.2.2 for interoperability
private static final long serialVersionUID = 8575799808933029326L;
public int compare(String s1, String s2) {
int n1 = s1.length();
int n2 = s2.length();
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
if (c1 != c2) {
// No overflow because of numeric promotion
return c1 - c2;
}
}
}
}
return n1 - n2;
}
}
Puoi fare un esempio? Stringhe e caratteri non si occupano di Charsets; I set di caratteri sono usati solo per codificarli come byte. –
Da Wikipedia: "La lettera maiuscola greca" Σ "ha due diverse forme minuscole:" ς "nella posizione parola-finale e" σ "altrove." Https://en.wikipedia.org/wiki/Letter_case – Jan
ma che cosa ha a che fare con Charsets? –