1
je voulais » ABCDE » pour écrire ma propre méthode compareTo, donc je peux écrire ce code simple:Comment manuellement lexicographique compareTo « ABCD » et « efficace
public int myCompare(String a, String b) {
int min = Math.min(a.length(), b.length());
for (int i=0; i < min; i++) {
int diff = a.charAt(i) - b.charAt(i);
if (diff == 0) {
continue;
} else {
return diff;
}
}
// meaning both strings are equals so far
if (a.length() == b.length()) {
return 0;
} else if (a.length() > b.length()) {
return -1;
} else {
return 1;
}
}
Eh bien, ce code fonctionne bien, mais je détestez le dernier if/else
Instruction- vous avez des suggestions pour améliorer ce code?
@AndyTurner oui, mais 'char - char' est un 'int' comme un' octet - byte' ou 'octet% byte': P –
Oui, j'ai réalisé ça après l'avoir écrit. Je préfère toujours les méthodes 'WrappedPrimitive.compare', attention. –
@AndyTurner Je me demande souvent pourquoi les programmeurs ont tellement peur des mathématiques de base que des expressions beaucoup plus complexes sont attrayantes. –