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 RowRefs 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 RowLinks 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 RowRefs in their natural (Comparable) order.

Author:
Mark Taylor (Starlink)
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Comparison order compares first table (if present in both objects) first, etc.
    static RowLink
    Returns a RowLink instance for a given collection of RowRefs.
    boolean
    Assesses equality.
    abstract RowRef
    getRef(int i)
    Returns the ith row ref in this ordered sequence of refs.
    int
    Returns a hash code which is consistent with the equals method.
    abstract int
    Returns the number of rows linked by this object.
     

    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 ith 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 RowRefs.
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Returns a hash code which is consistent with the equals method. Since RowLinks 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