rwaldhoff    2003/11/30 23:43:41

  Modified:    functor/src/java/org/apache/commons/functor/util
                        BinarySearch.java
  Log:
  cleanup
  
  Revision  Changes    Path
  1.7       +13 -9     
jakarta-commons-sandbox/functor/src/java/org/apache/commons/functor/util/BinarySearch.java
  
  Index: BinarySearch.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/functor/src/java/org/apache/commons/functor/util/BinarySearch.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BinarySearch.java 1 Dec 2003 07:33:47 -0000       1.6
  +++ BinarySearch.java 1 Dec 2003 07:43:41 -0000       1.7
  @@ -83,7 +83,7 @@
           this(list,item,0,list.size());
       }
   
  -    public BinarySearch(List list, Comparable item, int lower, int upper) {
  +    private BinarySearch(List list, Comparable item, int lower, int upper) {
           this.list = list; 
           this.item = item;
           this.lower = lower; 
  @@ -98,18 +98,20 @@
        * when it is found. If the item is not found -1 (as Integer) is returned.
        */
       public Object evaluate() {
  -        // TODO: should be using compareTo instead of equals
  -        if (lower == upper) {
  +        if (lower >= upper) {
               if(upper >= list.size()) {
  -                return new Integer(-1);
  -            } else if(list.get(upper).equals(item)) {
  +                return NEGATIVE_ONE;
  +            } else if(item.compareTo(list.get(upper)) == 0) {
                   return new Integer(upper);
               } else {
  -                return new Integer(-1);
  +                return NEGATIVE_ONE;
               }
           } else {
               int middle = (lower + upper) / 2;
  -            if (item.compareTo(list.get(middle)) > 0) {
  +            int compare = item.compareTo(list.get(middle));
  +            if(compare == 0) {
  +                return new Integer(middle);
  +            } else if(compare > 0) {
                   return new BinarySearch(list, item, middle+1, upper);
               } else {
                   return new BinarySearch(list, item, lower, middle);
  @@ -131,4 +133,6 @@
       private Comparable item = null;
       private int lower = 0;
       private int upper = 0;
  +    
  +    private static final Integer NEGATIVE_ONE = new Integer(-1);
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to