## com.google.javascript.jscomp.graph
Interface UnionFind<E>

Type Parameters:
  `E` - element type

All Known Implementing Classes:
  StandardUnionFind

    public interface UnionFind<E>

Union-Find is a classical algorithm used to find connected components in graph theory.

Each equivalence class has a representative element that is chosen arbitrarily and is used to determine if two elements are members of the same class.

See algorithmist for more detail.

Method Summary
`void` | `add(E e)` Adds the given element to a new set if it is not already in a set.
`Collection<Set<E>>` | `allEquivalenceClasses()` Returns an immutable collection containing all equivalence classes.
`boolean` | `areEquivalent(E a, E b)` Returns true if `a` and `b` belong to the same equivalence class.
`Set<E>` | `elements()` Returns an unmodifiable set of all elements added to the UnionFind.
`E` | `find(E e)` Returns the representative of the equivalence class of `e`.
`Set<E>` | `findAll(E value)` Returns the elements in the same equivalence class as `value`.
`E` | `union(E a, E b)` Unions the equivalence classes of `a` and `b` and returns the representative of the resulting equivalence class.

Method Detail

### add

    void add(E e)

  Adds the given element to a new set if it is not already in a set.

  Throws:
    `UnsupportedOperationException` - if the add operation is not supported by this union-find.

### union

    E union(E a,
            E b)

  Unions the equivalence classes of `a` and `b` and returns the representative of the resulting equivalence class. The elements will be added if they are not already present.

  Throws:
    `UnsupportedOperationException` - if the add operation is not supported by this union-find.

### find

    E find(E e)

  Returns the representative of the equivalence class of `e`.

### areEquivalent

    boolean areEquivalent(E a,
                          E b)

  Returns true if `a` and `b` belong to the same equivalence class.

  Throws:
    `IllegalArgumentException` - if any argument is not an element of this structure.

### elements

    Set<E> elements()

  Returns an unmodifiable set of all elements added to the UnionFind.

### allEquivalenceClasses

    Collection<Set<E>> allEquivalenceClasses()

  Returns an immutable collection containing all equivalence classes. The returned collection represents a snapshot of the current state and will not reflect changes made to the data structure.

### findAll

    Set<E> findAll(E value)

  Returns the elements in the same equivalence class as `value`.

  Returns:
    an unmodifiable view. As equivalence classes are merged, this set will reflect those changes.
  Throws:
    `IllegalArgumentException` - if a requested element does not belong to the structure.