import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class BinSearch
{
/**
* Comparator for reverse alphabetic sorting
*/
private static final Comparator<String> order = new ReverseAlphabetically();
/**
* test binary search
*
* @param args not used
*/
public static void main ( String[] args )
{
ArrayList<String> antelopes = new ArrayList<String>(10);
antelopes.add( "kudu" );
antelopes.add( "gazelle" );
antelopes.add( "springbok" );
antelopes.add( "impala" );
antelopes.add( "duiker" );
Collections.sort( antelopes, order );
for ( String antelope : antelopes )
{
System.out.println( antelope );
}
int whereFound = Collections.binarySearch( antelopes, "gnu", order );
System.out.println( whereFound );
}
}
/**
* top level default scope Comparator to sort in reverse order.
*/
class ReverseAlphabetically implements Comparator<String>
{
/**
* Compare two Strings in reverse order
* Callback for sort.
* effectively returns -(a-b);
* @return -1, a>b, 0 a=b, +1 a<b, case insenstive
*/
public final int compare( String a, String b )
{
return b.compareToIgnoreCase( a );
}
}