Na verdade, a lista está desordenada, não necessariamente “a” está na primeira posicao da lista, você não especificou qual posição na lista “a” deveria ter sido inserido.
Vale lembrar que para usar a busca binária a lista tem que estar ordenada.
brunorota
Mais o ah está na segunda posição, a segunda posição não é 1?
E
entanglement
A resposta é “não previsível” porque Collections.binarySearch e Arrays.binarySearch são métodos que funcionam corretamente apenas com coleções e arrays ordenados, respectivamente. Você está usando um ArrayList não ordenado (“b”, “a” e “c” está fora de ordem) então o método “binarySearch” não tem compromisso nenhum de funcionar corretamente.
Imagine que você crie uma classe que implementa a interface List e crie uma lista onde o elemento é sempre inserido no meio da lista.
Veja:
class GujList<E> implements List<E>{
private List<E> gujLista = new LinkedList<E>();
@Override
public boolean add(E e) {
int meio = gujLista.size() / 2;
gujLista.add(meio, e);
return true;
}
/*Restante dos métodos....*/
} // fim da classe