Collections.binarySearch[RESOLVIDO]

2 respostas
giselezr

Boa tarde

Observem o código:

public static void main(String... args){
         ArrayList a = new ArrayList();
         a.add("1");
         a.add("2");
         a.add("3");
         a.add("4");
         a.add("5");
         a.add("6");
         a.add("7");
         a.add("8");
         
       Comparator c = Collections.reverseOrder();
       Collections.sort(a,c);
       for (Object o : a){
           String s = (String) o;
            System.out.println(s);
       }
       
       int result = Collections.binarySearch(a, "6");
       System.out.println("result1 : "+result);
       
       int result2 = Collections.binarySearch(a, "6", c);
       System.out.println("result2 : "+result2);
       
     }

para imprimir o valor 2, primeiro foi feito uma inversão das posições da lista, depois é feito a procura com binarySearch, porem se eu não utilizar o construtor que manda o comparator, sai valor igual a -9, não tem sentido (pelo menos para mim), mas se mandar o comparator para binarysearch ai encontra.
Eu li o javadoc porem não consegui entender. Alguém pode me explicar por favor?

abraço

2 Respostas

B

Javadoc Collections.binarySearch(java.util.List, T)

Significa que você deve passar uma lista ordenada da mesma forma que Collections.sort ordenaria essa lista.

Javadoc Collections.binarySearch(java.util.List, T, java.util.Comparator)

Significa que você deve passar uma lista ordenada da mesma forma que Collections.sort(Comparator) ordenaria essa lista.

Em suma, não misture uma lista ordenada de uma forma com um binarySeach que espera a lista ordenada de outra forma. -9 é o tal do resultado indefinido.

giselezr

entendido… obrigada :slight_smile:

Criado 22 de setembro de 2012
Ultima resposta 25 de set. de 2012
Respostas 2
Participantes 2