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]