mas         02/03/19 16:25:37

  Modified:    collections/src/java/org/apache/commons/collections/comparators
                        ReverseComparator.java
  Log:
  Fix deviation from Comparator contract
  [sgn(compare(x, y)) == -sgn(compare(y, x))]
  
  Eliminate multiplication by switching order of objects passed to
  underlying comparator.
  
  Revision  Changes    Path
  1.6       +11 -12    
jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ReverseComparator.java
  
  Index: ReverseComparator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/collections/src/java/org/apache/commons/collections/comparators/ReverseComparator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ReverseComparator.java    1 Mar 2002 19:18:49 -0000       1.5
  +++ ReverseComparator.java    20 Mar 2002 00:25:37 -0000      1.6
  @@ -61,20 +61,19 @@
    * Reverses the order of another comparator.
    *
    * @author [EMAIL PROTECTED]
  - * @version $Id: ReverseComparator.java,v 1.5 2002/03/01 19:18:49 morgand Exp $
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Michael A. Smith</a>
  + * @version $Id: ReverseComparator.java,v 1.6 2002/03/20 00:25:37 mas Exp $
    */
   public class ReverseComparator implements Comparator,Serializable {
   
       private Comparator comparator;
   
       /**
  -     * Creates a reverse comparator that will invert any List.
  -     * It merely reverses the existing order; it does not
  -     * reorder the List according to reverse "natural" order.
  -     * In many cases, a faster alternative to this is
  -     * the reverse(List) method of java.util.Collection.
  +     * Creates a comparator that compares objects based on the inverse of their
  +     * natural ordering.
        */
       public ReverseComparator() {
  +        this(null);
       }
   
       /**
  @@ -82,15 +81,15 @@
        * of the passed in comparator.
        */
       public ReverseComparator(Comparator comparator) {
  -        this.comparator = comparator;
  +        if(comparator != null) {
  +            this.comparator = comparator;
  +        } else {
  +            this.comparator = ComparableComparator.getInstance();
  +        }
       }
   
       public int compare(Object o1, Object o2) {
  -        if(comparator == null) {
  -            return -1;
  -        } else {
  -            return -1*comparator.compare(o1,o2);
  -        }
  +        return comparator.compare(o2, o1);
       }
   
   }
  
  
  

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

Reply via email to