Duda Java

enridelg

Tengo una clase (Item) y otra clase en la que creo un ArrayList con Items y lo que tengo que hacer de algun modo es implementar la interfaz Collections y los metodos compareTo() equals() para poder usar la funcion binarySearch(), pero no se muy bien como hacerlo.

He implementado en Item ya la interfaz y los metodos.

equals
compareTo

El problema es que no se si se puede usar BinarySearch con ArrayList o como va eso.

bLero

#1

Lo primero, una vez que hayas insertado los items en el ArrayList es ordenarlos, así que como ya tienes implentados los metodos compareTo y equals, ya se podrán ordenar en funcion de tus necesidades, en tu caso por lo que veo, por el id del item.

Collections.sort(arrayList);

una vez ordenados, ya puedes realizar la búsqueda binaria:

int index = Collections.binarySearch(arrayList,itemToSearch);
System.out.println("Element found at : " + index);

1 respuesta
enridelg

#2

Gracias, una cosa mas, ¿en caso de que un objeto no este el binarySearch te devuelve la posición en la que debería ser insertado?, lo digo para que el método de añadir los objetos use la búsqueda binaria lo añada en su sitio y no es necesario usar el QuickShort, tendría que ser mas eficiente supongo.

1 respuesta
bLero

#3 Sí, tal como dice la API:

Returns:

the index of the search key, if it is contained in the list; otherwise, (-(insertion point) - 1). The insertion point is defined as the point at which the key would be inserted into the list: the index of the first element greater than the key, or list.size() if all elements in the list are less than the specified key. Note that this guarantees that the return value will be >= 0 if and only if the key is found.

1 1 respuesta
enridelg

#4 Muchas gracias, eres un crack jeje

Usuarios habituales

  • enridelg
  • bLero