ここには、Arrays.binarySearch
を理解するために構築した単純なコードがあります。しかし、それは私が期待していなかった結果を返しています。ここでJava - 配列binarySearchはカスタムソート後に予期しない結果を返します
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
私のカスタムコンパレータ
class MyNewComparator1 implements Comparator<String> {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}
結果である私は0, -2, Unpredictable
を期待しています。しかし、誰かがそれを返している理由を理解するために私を助けてくださいすることができ、結果はそれが-4, -4, -4
を返しますすべての検索のための-4
? Javadocの状態として
おかげ
。 'Arrays.binarySearch(T []、T、Comparator)'でオーバーロードを使ってみてください。予想される結果を返します( '' N "'だけでも '-2'も返すと思いますが...)。 –
user2478398