## com.google.javascript.jscomp.graph
Class StandardUnionFind<E>

    java.lang.Object
      com.google.javascript.jscomp.graph.StandardUnionFind<E>

Type Parameters:
  `E` - element type

All Implemented Interfaces:
  UnionFind<E>, Serializable

    public class StandardUnionFind<E>

extends Object
implements Serializable, UnionFind<E>

A Union-Find implementation.

This class implements Union-Find algorithm with rank and path compression.

See algorithmist for more detail.

See Also:
  Serialized Form

Constructor Summary
`StandardUnionFind()` Creates an empty UnionFind structure.
`StandardUnionFind(UnionFind<E> other)` Creates an UnionFind structure being a copy of other structure.

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.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### StandardUnionFind

    public StandardUnionFind()

  Creates an empty UnionFind structure.

### StandardUnionFind

    public StandardUnionFind(UnionFind<E> other)

  Creates an UnionFind structure being a copy of other structure. The created structure is optimal in a sense that the paths to the root from any element will have a length of at most 1.

  Parameters:
    `other` - structure to be copied

Method Detail

### add

    public void add(E e)

  Description copied from interface: `UnionFind`
  Adds the given element to a new set if it is not already in a set.

  Specified by:
    `add` in interface `UnionFind<E>`

### union

    public E union(E a,
                   E b)

  Description copied from interface: `UnionFind`
  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.

  Specified by:
    `union` in interface `UnionFind<E>`

### find

    public E find(E e)

  Description copied from interface: `UnionFind`
  Returns the representative of the equivalence class of `e`.

  Specified by:
    `find` in interface `UnionFind<E>`

### areEquivalent

    public boolean areEquivalent(E a,
                                 E b)

  Description copied from interface: `UnionFind`
  Returns true if `a` and `b` belong to the same equivalence class.

  Specified by:
    `areEquivalent` in interface `UnionFind<E>`

### elements

    public Set<E> elements()

  Description copied from interface: `UnionFind`
  Returns an unmodifiable set of all elements added to the UnionFind.

  Specified by:
    `elements` in interface `UnionFind<E>`

### allEquivalenceClasses

    public Collection<Set<E>> allEquivalenceClasses()

  Description copied from interface: `UnionFind`
  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.

  Specified by:
    `allEquivalenceClasses` in interface `UnionFind<E>`

### findAll

    public Set<E> findAll(E value)

  Description copied from interface: `UnionFind`
  Returns the elements in the same equivalence class as `value`.

  Specified by:
    `findAll` in interface `UnionFind<E>`
  Returns:
    an unmodifiable view. As equivalence classes are merged, this set will reflect those changes.