Voici le simple morceau de code que je construis pour comprendre Arrays.binarySearch
. Mais il retourne un résultat auquel je ne m'attendais même pas.Java - Arrays binarySearch renvoyant un résultat inattendu après tri personnalisé
String[] c = {"A", "Z", "B"};
Arrays.sort(c, new MyNewComparator1()); //Z, B, A
System.out.println(Arrays.binarySearch(c, "Z")); //0
System.out.println(Arrays.binarySearch(c, "S")); //-2 based on insertion point
System.out.println(Arrays.binarySearch(c, "N")); //Unpredicable result we can expect
Voici mon Comparator personnalisé
class MyNewComparator1 implements Comparator<String> {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}
Résultat J'attends 0, -2, Unpredictable
Mais le résultat, il revient -4, -4, -4
Quelqu'un peut-il s'il vous plaît aidez-moi à comprendre pourquoi il est de retour -4
pour toute la recherche.
Merci
Vous ne savez pas quel 'comparateur 'vous avez utilisé pour trier votre liste. Essayez d'utiliser la surcharge avec 'Arrays.binarySearch (T [], T, comparateur)'. Renvoie les résultats que vous attendez (bien que je pense que '" N "' retournerait '-2' aussi bien ...). –
user2478398