Package uk.ac.starlink.table.join

# Class RowLink

java.lang.Object
uk.ac.starlink.table.join.RowLink

All Implemented Interfaces:
  `Comparable<RowLink>`

Direct Known Subclasses:
  `RowLink1`, `RowLink2`, `RowLinkN`

public abstract class RowLink extends Object implements Comparable<RowLink>
Represents an ordered set of `RowRef`s which are considered in some way linked to each other. Although it doesn't implement the `SortedSet` interface (being immutable this wouldn't gain you much) its spirit is that of a sorted set - its `equals` and `hashCode` methods are implemented such that two `RowLink`s which contain equivalent groups of `RowRef` objects are considered the same. This makes RowLink instances suitable for use as keys in hashes that should not contain duplicate entries for duplicate links.

Note: The `getRef` method must return `RowRef`s in their natural (`Comparable`) order.

Author:
  Mark Taylor (Starlink)

## Constructor Summary

Constructors
Constructor
Description
`RowLink()`

## Method Summary

Modifier and Type
Method
Description
`int`
`compareTo(RowLink other)`
Comparison order compares first table (if present in both objects) first, etc.
`static RowLink`
`createLink(Collection<RowRef> refs)`
Returns a RowLink instance for a given collection of RowRefs.
`boolean`
`equals(Object o)`
Assesses equality.
`abstract RowRef`
`getRef(int i)`
Returns the `i`th row ref in this ordered sequence of refs.
`int`
`hashCode()`
Returns a hash code which is consistent with the `equals` method.
`abstract int`
`size()`
Returns the number of rows linked by this object.
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Constructor Details

### RowLink

public RowLink()

## Method Details

### size

public abstract int size()
Returns the number of rows linked by this object.

Returns:
  number of RowRefs

### getRef

public abstract RowRef getRef(int i)
Returns the `i`th row ref in this ordered sequence of refs. The sequence must be as defined by `RowRef.compareTo`.

Parameters:
  `i` - index
Returns:
  RowRef at `i`

### equals

public boolean equals(Object o)
Assesses equality. Two `RowLink` objects are equal if they contain equivalent sets of `RowRef`s.

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()
Returns a hash code which is consistent with the `equals` method. Since `RowLink`s are immutable, this is only calculated once, for efficiency.

Overrides:
  `hashCode` in class `Object`

### compareTo

public int compareTo(RowLink other)
Comparison order compares first table (if present in both objects) first, etc.

Specified by:
  `compareTo` in interface `Comparable<RowLink>`

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### createLink

public static RowLink createLink(Collection<RowRef> refs)
Returns a RowLink instance for a given collection of RowRefs. This may be more efficient than using the `RowLinkN` constructor.

Parameters:
  `refs` - row refs
Returns:
  row link containing given refs