Olá pessoal,
eu não estou conseguindo entender
os resultados do método BinarySearch
será que alguém poderia me ajudar a
entender os resultado desse método?
import java.util.*;
//O que acontece se eu remover o generico <String>???
class SearchObjArray{
public static void main(String[] args){
String[] sa = {"one", "two", "three", "four"};
Arrays.sort(sa);
for(String s: sa){
System.out.print(s + " ");
}
System.out.println("\nfour = " + Arrays.binarySearch(sa, "four"));
System.out.println("one = " + Arrays.binarySearch(sa, "one"));
System.out.println("three = " + Arrays.binarySearch(sa, "three"));
System.out.println("two = " + Arrays.binarySearch(sa, "two"));
System.out.println("now reverse sort");
ReSortComparator rs = new ReSortComparator();
Arrays.sort(sa,rs);
for(String s: sa){
System.out.print(s + " ");
}
System.out.println("\nfour = " + Arrays.binarySearch(sa, "four"));
System.out.println("one = " + Arrays.binarySearch(sa, "one"));
System.out.println("three = " + Arrays.binarySearch(sa, "three"));
System.out.println("two = " + Arrays.binarySearch(sa, "two"));
System.out.println("one = " + Arrays.binarySearch(sa, "one", rs));
}
static class ReSortComparator implements Comparator<String>{
public int compare(String a, String b){
return b.compareTo(a);
}
}
}
Resultados
/*
four one three two
four = 0
one = 1
three = 2
two = 3
now reverse sort
two three one four
four = -1
one = -1
three = 1
two = -5 PORQUE????
one = 2
*/
[]'s.