Class StrongInternPool<E>

    • Field Detail

      • NULL

        private static final java.lang.Object NULL
        Marks null keys.
      • serialVersionUID

        private static final long serialVersionUID
        Serialization ID
        See Also:
        Constant Field Values
      • DEFAULT_CAPACITY

        private static final int DEFAULT_CAPACITY
        Same default as HashMap, must be a power of 2
        See Also:
        Constant Field Values
      • MAXIMUM_CAPACITY

        private static final int MAXIMUM_CAPACITY
        MAX_INT - 1
        See Also:
        Constant Field Values
      • DEFAULT_LOAD_FACTOR

        private static final float DEFAULT_LOAD_FACTOR
        67%, just like IdentityHashMap
        See Also:
        Constant Field Values
      • elementType

        private final java.lang.Class<E> elementType
        The class of values that may be present in table.
      • table

        private transient java.lang.Object[] table
        The open-addressed table

        Must be Object[] instead of E[] to allow storing the NULL marker.

      • size

        private transient int size
        The current number of key-value pairs
      • threshold

        private transient int threshold
        The next resize
      • loadFactor

        private final float loadFactor
        The user defined load factor which defines when to resize
      • modCount

        private transient int modCount
        Counter used to detect changes made outside of an iterator
    • Constructor Detail

      • StrongInternPool

        StrongInternPool​(java.lang.Class<E> elementType,
                         int initialCapacity,
                         float loadFactor)
      • StrongInternPool

        StrongInternPool​(java.lang.Class<E> elementType,
                         int initialCapacity)
      • StrongInternPool

        StrongInternPool​(java.lang.Class<E> elementType)
    • Method Detail

      • init

        private void init​(int initialCapacity,
                          float loadFactor)
      • mayContain

        boolean mayContain​(java.lang.Object o)
      • eq

        boolean eq​(java.lang.Object o1,
                   java.lang.Object o2)
      • hash

        int hash​(java.lang.Object o)
      • equality

        abstract boolean equality​(E o1,
                                  E o2)
      • hashCode

        abstract int hashCode​(E o)
      • maskNull

        private static <K> K maskNull​(K key)
      • unmaskNull

        private static <K> K unmaskNull​(K key)
      • nextIndex

        private int nextIndex​(int index,
                              int length)
      • index

        private static int index​(int hashCode,
                                 int length)
      • size

        public int size()
      • isEmpty

        public boolean isEmpty()
      • contains

        public boolean contains​(java.lang.Object entry)
      • offset

        private int offset​(java.lang.Object entry)
      • intern

        public E intern​(E entry)
        Internalizes the specified object by always returning the first ever stored. Equal objects with different identity (aka duplicates) can be eliminated with this method.
        Parameters:
        entry - the object to internalize
        Returns:
        the one true unique object (equal to entry)
      • resize

        private void resize​(int from)
      • remove

        public boolean remove​(java.lang.Object o)
      • relocate

        private void relocate​(int start)
      • clear

        public void clear()
      • clone

        public StrongInternPool<E> clone()
        Overrides:
        clone in class java.lang.Object
      • toInternalArray

        public java.lang.Object[] toInternalArray()
        Advanced method that returns the internal table. The resulting array will contain nulls at random places that must be skipped. In addition, it will not operate correctly if a null was inserted into the set. Use at your own risk....
        Returns:
        an array containing elements in this set along with randomly placed nulls,
      • printDebugStats

        public void printDebugStats()
      • readObject

        private void readObject​(java.io.ObjectInputStream s)
                         throws java.io.IOException,
                                java.lang.ClassNotFoundException
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • putForCreate

        private void putForCreate​(E entry)
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream s)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • iterator

        public java.util.Iterator<E> iterator()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object