Pessoal,
Dado o código abaixo:
public static void main(String [] args) {
Integer[] a = {2,3,1,5};
Comparator<Integer> comparator1 = new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}};
Comparator<Integer> comparator2 = new Comparator<Integer>(){
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}};
System.out.println("Array inicial: " + Arrays.asList(a));
//Ordenei com um Comparator e pedi o índice informando outro Comparator, mas achou a posição.
Arrays.sort(a, comparator1);
List<Integer> listaOrdenada1 = Arrays.asList(a);
int posicao1 = Arrays.binarySearch(a, 3, comparator2);
System.out.println("Com a ordenação 1, a lista fica assim " + listaOrdenada1 + " e a posição do número 3 é: " + posicao1);
//Ordenei com um Comparator e pedi o índice informando outro Comparator, mas não achou a posição (como eu achei que fosse acontecer em ambas as versões.)
Arrays.sort(a, comparator2);
List<Integer> listaOrdenada2 = Arrays.asList(a);
int posicao2 = Arrays.binarySearch(a, 3, comparator1);
System.out.println("Com a ordenação 2, a lista fica assim " + listaOrdenada2 + " e a posição do número 3 é: " + posicao2);
}
Alguém sabe explicar por que a saída é:
Array inicial: [2, 3, 1, 5]
Com a ordenação 1, a lista fica assim [5, 3, 2, 1] e a posição do número 3 é: 1
Com a ordenação 2, a lista fica assim [1, 2, 3, 5] e a posição do número 3 é: -1
[]'s