package cop3530; import java.util.List; public interface RangeSearcher { void makeEmpty( ); boolean isEmpty( ); boolean add( Object x ); int size( ); List getItemsInInterval( Object lower, Object upper ); boolean contains( Object x ); } package cop3530; import java.util.Comparator; import java.util.List; import java.util.ArrayList; public class ArrayRangeSearcher implements RangeSearcher { private int size = 0; private Object [] arr; private Comparator cmp; ... public ArrayRangeSearcher( Comparator c ) { arr = new Object[ 5 ]; cmp = c; } public List getItemsInInterval( Object lower, Object upper ) { List result = new ArrayList( ); for( int i = 0; i < size; i++ ) { if( cmp.compare( lower, arr[ i ] ) <=0 && cmp.compare( upper, arr[ i ] ) >= 0 ) result.add( arr[ i ] ); } return result; } public boolean add( Object x ) { if( contains( x ) ) return false; if( size == arr.length ) { Object [] newArr = new Object[ size * 2 + 1 ]; for( int i = 0; i < size; i++ ) newArr[ i ] = arr[ i ]; arr = newArr; } arr[ size++ ] = x; return true; } }