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]>