import java.util.Comparator;
// Fig 4.32 pg 130
class CompareTestInner1
{
public static
Object findMax( Object [ ] a,
Comparator
cmp )
{
int
maxIndex = 0;
for( int
i = 1; i < a.length; i++ )
if(
cmp.compare( a[ i ], a[ maxIndex ] ) > 0 )
maxIndex = i;
return a[
maxIndex ];
}
private static class OrderRectByArea
implements
Comparator
{
public
int compare( Object obj1, Object obj2 )
{
SimpleRectangle r1 = (SimpleRectangle) obj1;
SimpleRectangle r2 = (SimpleRectangle) obj2;
return( r1.getWidth()*r1.getLength() -
r2.getWidth()*r2.getLength() );
}
}
public static void main( String [ ] args )
{
Object [
] rects = new Object[ 4 ];
rects[ 0
] = new SimpleRectangle( 1, 10 );
rects[ 1
] = new SimpleRectangle( 20, 1 );
rects[ 2
] = new SimpleRectangle( 4, 6 );
rects[ 3
] = new SimpleRectangle( 5, 5 );
System.out.println( "MAX WIDTH: " +
findMax( rects, new OrderRectByWidth( ) ) );
System.out.println( "MAX AREA: " +
findMax( rects, new OrderRectByArea( ) ) );
}
}