org.apache.hadoop.hdfs.util

## Class LightWeightHashSet<T>

- java.lang.Object
- - org.apache.hadoop.hdfs.util.LightWeightHashSet<T>

- All Implemented Interfaces:
    Iterable<T>, Collection<T>
  Direct Known Subclasses:
    LightWeightLinkedSet

      public class LightWeightHashSet<T>
      extends Object
      implements Collection<T>

  A low memory linked hash set implementation, which uses an array for storing the elements and linked lists for collision resolution. This class does not support null element. This class is not thread safe.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static float` | `DEFAULT_MAX_LOAD_FACTOR`
    `protected static float` | `DEFAUT_MIN_LOAD_FACTOR`
    `protected org.apache.hadoop.hdfs.util.LightWeightHashSet.LinkedElement<T>[]` | `entries` An internal array of entries, which are the rows of the hash table.
    `protected static int` | `MINIMUM_CAPACITY`
    `protected int` | `modification` Modification version for fail-fast.
    `protected int` | `size` The size of the set (not the entry array).

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LightWeightHashSet()`
    `LightWeightHashSet(int minCapacity)`
    `LightWeightHashSet(int initCapacity, float maxLoadFactor, float minLoadFactor)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `add(T element)` Add given element to the hash table.
    `boolean` | `addAll(Collection<? extends T> toAdd)` All all elements in the collection.
    `protected boolean` | `addElem(T element)` Add given element to the hash table
    `void` | `clear()` Clear the set.
    `boolean` | `contains(Object key)` Check if the set contains given element
    `boolean` | `containsAll(Collection<?> c)`
    `protected void` | `expandIfNecessary()` Checks if we need to expand, and expands if necessary.
    `int` | `getCapacity()` Return the current capacity (for testing).
    `protected T` | `getContainedElem(int index, T key, int hashCode)` Check if the set contains given element at given index.
    `T` | `getElement(T key)` Return the element in this set which is equal to the given key, if such an element exists.
    `protected int` | `getIndex(int hashCode)` Get index in the internal table for a given hash.
    `boolean` | `isEmpty()` Check if the set is empty.
    `Iterator<T>` | `iterator()`
    `List<T>` | `pollAll()` Remove all elements from the set and return them.
    `List<T>` | `pollN(int n)` Remove and return n elements from the hashtable.
    `T[]` | `pollToArray(T[] array)` Get array.length elements from the set, and put them into the array.
    `void` | `printDetails(PrintStream out)` Print detailed information of this object.
    `boolean` | `remove(Object key)` Remove the element corresponding to the key.
    `boolean` | `removeAll(Collection<?> c)`
    `protected org.apache.hadoop.hdfs.util.LightWeightHashSet.LinkedElement<T>` | `removeElem(T key)` Remove the element corresponding to the key, given key.hashCode() == index.
    `boolean` | `retainAll(Collection<?> c)`
    `protected void` | `shrinkIfNecessary()` Checks if we need to shrink, and shrinks if necessary.
    `int` | `size()` Return the number of stored elements.
    `Object[]` | `toArray()`
    `<U> U[]` | `toArray(U[] a)`
    `String` | `toString()`

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

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

    - ### Methods inherited from interface java.util.Collection

      `equals, hashCode, parallelStream, removeIf, spliterator, stream`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach`

- - ### Field Detail

    - #### DEFAULT_MAX_LOAD_FACTOR

          protected static final float DEFAULT_MAX_LOAD_FACTOR

      See Also:
        Constant Field Values

    - #### DEFAUT_MIN_LOAD_FACTOR

          protected static final float DEFAUT_MIN_LOAD_FACTOR

      See Also:
        Constant Field Values

    - #### MINIMUM_CAPACITY

          protected static final int MINIMUM_CAPACITY

      See Also:
        Constant Field Values

    - #### entries

          protected org.apache.hadoop.hdfs.util.LightWeightHashSet.LinkedElement<T>[] entries

      An internal array of entries, which are the rows of the hash table. The size must be a power of two.

    - #### size

          protected int size

      The size of the set (not the entry array).

    - #### modification

          protected int modification

      Modification version for fail-fast.
      See Also:
        `ConcurrentModificationException`

  - ### Constructor Detail

    - #### LightWeightHashSet

          public LightWeightHashSet(int initCapacity,
                                    float maxLoadFactor,
                                    float minLoadFactor)

      Parameters:
        `initCapacity` - Recommended size of the internal array.
        `maxLoadFactor` - used to determine when to expand the internal array
        `minLoadFactor` - used to determine when to shrink the internal array

    - #### LightWeightHashSet

          public LightWeightHashSet()

    - #### LightWeightHashSet

          public LightWeightHashSet(int minCapacity)

  - ### Method Detail

    - #### isEmpty

          public boolean isEmpty()

      Check if the set is empty.
      Specified by:
        `isEmpty` in interface `Collection<T>`
      Returns:
        true is set empty, false otherwise

    - #### getCapacity

          public int getCapacity()

      Return the current capacity (for testing).

    - #### size

          public int size()

      Return the number of stored elements.
      Specified by:
        `size` in interface `Collection<T>`

    - #### getIndex

          protected int getIndex(int hashCode)

      Get index in the internal table for a given hash.

    - #### contains

          public boolean contains(Object key)

      Check if the set contains given element
      Specified by:
        `contains` in interface `Collection<T>`
      Returns:
        true if element present, false otherwise.

    - #### getElement

          public T getElement(T key)

      Return the element in this set which is equal to the given key, if such an element exists. Otherwise returns null.

    - #### getContainedElem

          protected T getContainedElem(int index,
                                       T key,
                                       int hashCode)

      Check if the set contains given element at given index. If it does, return that element.
      Returns:
        the element, or null, if no element matches

    - #### addAll

          public boolean addAll(Collection<? extends T> toAdd)

      All all elements in the collection. Expand if necessary.
      Specified by:
        `addAll` in interface `Collection<T>`
      Parameters:
        `toAdd` - - elements to add.
      Returns:
        true if the set has changed, false otherwise

    - #### add

          public boolean add(T element)

      Add given element to the hash table. Expand table if necessary.
      Specified by:
        `add` in interface `Collection<T>`
      Returns:
        true if the element was not present in the table, false otherwise

    - #### addElem

          protected boolean addElem(T element)

      Add given element to the hash table
      Returns:
        true if the element was not present in the table, false otherwise

    - #### remove

          public boolean remove(Object key)

      Remove the element corresponding to the key.
      Specified by:
        `remove` in interface `Collection<T>`
      Returns:
        If such element exists, return true. Otherwise, return false.

    - #### removeElem

          protected org.apache.hadoop.hdfs.util.LightWeightHashSet.LinkedElement<T> removeElem(T key)

      Remove the element corresponding to the key, given key.hashCode() == index.
      Returns:
        If such element exists, return true. Otherwise, return false.

    - #### pollN

          public List<T> pollN(int n)

      Remove and return n elements from the hashtable. The order in which entries are removed is unspecified, and and may not correspond to the order in which they were inserted.
      Returns:
        first element

    - #### pollAll

          public List<T> pollAll()

      Remove all elements from the set and return them. Clear the entries.

    - #### pollToArray

          public T[] pollToArray(T[] array)

      Get array.length elements from the set, and put them into the array.

    - #### shrinkIfNecessary

          protected void shrinkIfNecessary()

      Checks if we need to shrink, and shrinks if necessary.

    - #### expandIfNecessary

          protected void expandIfNecessary()

      Checks if we need to expand, and expands if necessary.

    - #### iterator

          public Iterator<T> iterator()

      Specified by:
        `iterator` in interface `Iterable<T>`
      Specified by:
        `iterator` in interface `Collection<T>`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### printDetails

          public void printDetails(PrintStream out)

      Print detailed information of this object.

    - #### clear

          public void clear()

      Clear the set. Resize it to the original capacity.
      Specified by:
        `clear` in interface `Collection<T>`

    - #### toArray

          public Object[] toArray()

      Specified by:
        `toArray` in interface `Collection<T>`

    - #### toArray

          public <U> U[] toArray(U[] a)

      Specified by:
        `toArray` in interface `Collection<T>`

    - #### containsAll

          public boolean containsAll(Collection<?> c)

      Specified by:
        `containsAll` in interface `Collection<T>`

    - #### removeAll

          public boolean removeAll(Collection<?> c)

      Specified by:
        `removeAll` in interface `Collection<T>`

    - #### retainAll

          public boolean retainAll(Collection<?> c)

      Specified by:
        `retainAll` in interface `Collection<T>`

Copyright © 2008–2022 Apache Software Foundation. All rights reserved.