All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.uci.ics.jung.visualization.spatial.rtree.VerticalEdgeMapEntryComparator Maven / Gradle / Ivy

package edu.uci.ics.jung.visualization.spatial.rtree;

import java.awt.geom.Rectangle2D;
import java.util.Comparator;
import java.util.Map;

/**
 * A comparator to compare along the y-axis, Map.Entries where the values are Rectangle2D First
 * compare the min y values, then the max y values
 *
 * @author Tom Nelson
 * @param 
 */
public class VerticalEdgeMapEntryComparator implements Comparator> {
  /**
   * Compares its two arguments for order. Returns a negative integer, zero, or a positive integer
   * as the first argument is less than, equal to, or greater than the second.
   *
   * 

* *

In the foregoing description, the notation sgn(expression) * designates the mathematical signum function, which is defined to return one of * -1, 0, or 1 according to whether the value of expression is * negative, zero or positive. * *

* *

The implementor must ensure that sgn(compare(x, y)) == -sgn(compare(y, x)) for all * x and y. (This implies that compare(x, y) must throw an exception if * and only if compare(y, x) throws an exception.) * *

* *

The implementor must also ensure that the relation is transitive: ((compare(x, y)>0) * && (compare(y, z)>0)) implies compare(x, z)>0. * *

* *

Finally, the implementor must ensure that compare(x, y)==0 implies that * sgn(compare(x, z))==sgn(compare(y, z)) for all z. * *

* *

It is generally the case, but not strictly required that (compare(x, y)==0) == * (x.equals(y)). Generally speaking, any comparator that violates this condition should * clearly indicate this fact. The recommended language is "Note: this comparator imposes * orderings that are inconsistent with equals." * * @param left the first object to be compared. * @param right the second object to be compared. * @return a negative integer, zero, or a positive integer as the first argument is less than, * equal to, or greater than the second. * @throws NullPointerException if an argument is null and this comparator does not permit null * arguments * @throws ClassCastException if the arguments' types prevent them from being compared by this * comparator. */ public int compare(Rectangle2D left, Rectangle2D right) { if (left.getMinY() == right.getMinY()) { if (left.getMaxY() == right.getMaxY()) return 0; if (left.getMaxY() < right.getMaxY()) return -1; else return 1; } else { if (left.getMinY() < right.getMinY()) return -1; return 1; } } @Override public int compare(Map.Entry leftNode, Map.Entry rightNode) { return compare(leftNode.getValue(), rightNode.getValue()); } public int compare(Node leftNode, Node rightNode) { return compare(leftNode.getBounds(), rightNode.getBounds()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy