graph-builder
Version:
A graph builder library for modeling abstract graph structures.
34 lines (20 loc) • 1.62 kB
Markdown
[Home](./index) > [graph-builder](./graph-builder.md) > [Comparator](./graph-builder.comparator.md) > [compare](./graph-builder.comparator.compare.md)
# Comparator.compare method
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.
**Signature:**
```javascript
compare(a: T, b: T): number;
```
**Returns:** `number`
## Remarks
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."
## Parameters
| Parameter | Type | Description |
| --- | --- | --- |
| `a` | `T` | |
| `b` | `T` | |