Suponga la existencia de una clase Widget que implementa la interfaz Comparable y, por lo tanto, tiene un método compareTo que acepta un parámetro Object y devuelve un int. Escriba un método estático eficiente, getWidgetMatch, que tenga dos parámetros.

IDIOMA: JAVA

DESAFÍO:

Suponga la existencia de una clase Widget que implementa la interfaz Comparable y, por lo tanto, tiene un método compareTo que acepta un parámetro Object y devuelve un int.

Escriba un método estático eficiente, getWidgetMatch, que tenga dos parámetros.

El primer parámetro es una referencia a un objeto Widget.
El segundo parámetro es una matriz potencialmente muy grande de objetos Widget que se ha clasificado en orden ascendente según el método Widget compareTo.

GetWidgetMatch busca un elemento en la matriz que coincida con el primer parámetro sobre la base del método equals y devuelve verdadero si se encuentra y falso en caso contrario.

SOLUTION:


public static boolean getWidgetMatch (Widget object, Widget[] widgetList)
{
    int l = 0;
    int h = widgetList.length - 1;
    while (l <= h){
        int mid = l + (h - l) / 2;
        if (object.compareTo(widgetList[mid]) < 0)
            h = mid - 1;
        else if (object.compareTo(widgetList[mid]) > 0)
            l = mid + 1;
        else return true;
    }

    return false;
}