Class ObjectLongHashMap<K>

    • Field Detail

      • DEFAULT_INITIAL_CAPACITY

        private static final int DEFAULT_INITIAL_CAPACITY
        See Also:
        Constant Field Values
      • NULL_KEY

        private static final java.lang.Object NULL_KEY
      • REMOVED_KEY

        private static final java.lang.Object REMOVED_KEY
      • keys

        private java.lang.Object[] keys
      • values

        private long[] values
      • occupiedWithData

        private int occupiedWithData
      • occupiedWithSentinels

        private int occupiedWithSentinels
    • Constructor Detail

      • ObjectLongHashMap

        public ObjectLongHashMap()
      • ObjectLongHashMap

        public ObjectLongHashMap​(int initialCapacity)
      • ObjectLongHashMap

        public ObjectLongHashMap​(ObjectLongMap<? extends K> map)
    • Method Detail

      • newWithKeysValues

        public static <K> ObjectLongHashMap<K> newWithKeysValues​(K key1,
                                                                 long value1)
      • newWithKeysValues

        public static <K> ObjectLongHashMap<K> newWithKeysValues​(K key1,
                                                                 long value1,
                                                                 K key2,
                                                                 long value2)
      • newWithKeysValues

        public static <K> ObjectLongHashMap<K> newWithKeysValues​(K key1,
                                                                 long value1,
                                                                 K key2,
                                                                 long value2,
                                                                 K key3,
                                                                 long value3)
      • newWithKeysValues

        public static <K> ObjectLongHashMap<K> newWithKeysValues​(K key1,
                                                                 long value1,
                                                                 K key2,
                                                                 long value2,
                                                                 K key3,
                                                                 long value3,
                                                                 K key4,
                                                                 long value4)
      • smallestPowerOfTwoGreaterThan

        private int smallestPowerOfTwoGreaterThan​(int n)
      • fastCeil

        private int fastCeil​(float v)
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Description copied from interface: ObjectLongMap
        Follows the same general contract as AbstractMap.toString()
        Specified by:
        toString in interface ObjectLongMap<K>
        Specified by:
        toString in interface PrimitiveIterable
        Overrides:
        toString in class java.lang.Object
        Returns:
        a string representation of this ObjectLongMap
        See Also:
        AbstractCollection.toString()
      • makeString

        public java.lang.String makeString()
        Description copied from interface: PrimitiveIterable
        Returns a string representation of this collection by delegating to PrimitiveIterable.makeString(String) and defaulting the separator parameter to the characters ", " (comma and space).
        Specified by:
        makeString in interface PrimitiveIterable
        Returns:
        a string representation of this collection.
      • makeString

        public java.lang.String makeString​(java.lang.String start,
                                           java.lang.String separator,
                                           java.lang.String end)
        Description copied from interface: PrimitiveIterable
        Returns a string representation of this collection with the elements separated by the specified separator and enclosed between the start and end strings.
        Specified by:
        makeString in interface PrimitiveIterable
        Returns:
        a string representation of this collection.
      • toArray

        public long[] toArray()
        Description copied from interface: LongIterable
        Converts the LongIterable to a primitive long array.
        Specified by:
        toArray in interface LongIterable
      • toArray

        public long[] toArray​(long[] target)
        Description copied from interface: LongIterable
        Converts the LongIterable to a primitive long array. If the collection fits into the provided array it is used to store its elements and is returned from the method, otherwise a new array of the appropriate size is allocated and returned. If the iterable is empty, the target array is returned unchanged.
        Specified by:
        toArray in interface LongIterable
      • contains

        public boolean contains​(long value)
        Description copied from interface: LongIterable
        Returns true if the value is contained in the LongIterable, and false if it is not.
        Specified by:
        contains in interface LongIterable
      • containsAll

        public boolean containsAll​(long... source)
        Description copied from interface: LongIterable
        Returns true if all of the values specified in the source array are contained in the LongIterable, and false if they are not.
        Specified by:
        containsAll in interface LongIterable
      • containsAll

        public boolean containsAll​(LongIterable source)
        Description copied from interface: LongIterable
        Returns true if all of the values specified in the source LongIterable are contained in the LongIterable, and false if they are not.
        Specified by:
        containsAll in interface LongIterable
      • put

        public void put​(K key,
                        long value)
        Description copied from interface: MutableObjectLongMap
        Associates a value with the specified key. If a value is already associated with the key in this map, it will be replaced with value.
        Specified by:
        put in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        value - the value to associate with value
      • putAll

        public void putAll​(ObjectLongMap<? extends K> map)
        Description copied from interface: MutableObjectLongMap
        Puts all of the key/value mappings from the specified map into this map. If this map already has a value associated with one of the keys in the map, it will be replaced with the value in map.
        Specified by:
        putAll in interface MutableObjectLongMap<K>
        Parameters:
        map - the map to copy into this map
      • removeKeyAtIndex

        private void removeKeyAtIndex​(K key,
                                      int index)
      • remove

        public void remove​(java.lang.Object key)
        Description copied from interface: MutableObjectLongMap
        Removes the mapping associated with the key, if one exists, from the map.
        Specified by:
        remove in interface MutableObjectLongMap<K>
        Parameters:
        key - the key to remove
        See Also:
        #removeKey(K)
      • removeKeyIfAbsent

        public long removeKeyIfAbsent​(K key,
                                      long value)
        Description copied from interface: MutableObjectLongMap
        Removes the mapping associated with the key, if one exists, from the map, returning the previously associated value with the key. If no mapping existed for the key, the specified default value is returned.
        Specified by:
        removeKeyIfAbsent in interface MutableObjectLongMap<K>
        Parameters:
        key - the key to remove
        value - the default value to return if no mapping for the key exists
        Returns:
        the value previously associated with the key, if one existed, or value if not
      • getIfAbsentPut

        public long getIfAbsentPut​(K key,
                                   long value)
        Description copied from interface: MutableObjectLongMap
        Retrieves the value associated with the key if one exists; if it does not, associates a value with the key. a new value with they key
        Specified by:
        getIfAbsentPut in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        value - the value to associate with key if no such mapping exists
        Returns:
        the value associated with key, if one exists, or value if not
      • getAndPut

        public long getAndPut​(K key,
                              long putValue,
                              long defaultValue)
        Description copied from interface: MutableObjectLongMap
        Retrieves the value associated with the key if one exists; if it does not, associates a putValue with the key.
        Specified by:
        getAndPut in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        putValue - the value to associate with key if no such mapping exists
        defaultValue - the value to return if no mapping associated with key exists
        Returns:
        the value associated with key, if one exists, or defaultValue if not
      • getIfAbsentPut

        public long getIfAbsentPut​(K key,
                                   LongFunction0 function)
        Description copied from interface: MutableObjectLongMap
        Retrieves the value associated with the key if one exists; if it does not, invokes the supplier and associates the result with the key.
        Specified by:
        getIfAbsentPut in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        function - the supplier that provides the value if no mapping exists for key
        Returns:
        the value associated with the key, if one exists, or the result of invoking function if not
      • getIfAbsentPutWith

        public <P> long getIfAbsentPutWith​(K key,
                                           LongFunction<? super P> function,
                                           P parameter)
        Description copied from interface: MutableObjectLongMap
        Retrieves the value associated with the key if one exists; if it does not, invokes the value function with the parameter and associates the result with the key.
        Specified by:
        getIfAbsentPutWith in interface MutableObjectLongMap<K>
        Type Parameters:
        P - the type of the value function's parameter
        Parameters:
        key - the key
        function - the function that provides the value if no mapping exists. The specified parameter will be passed as the argument to the function.
        parameter - the parameter to provide to function if no value exists for key
        Returns:
        the value associated with the key, if one exists, or the result of invoking function with parameter if not
      • getIfAbsentPutWithKey

        public long getIfAbsentPutWithKey​(K key,
                                          LongFunction<? super K> function)
        Description copied from interface: MutableObjectLongMap
        Retrieves the value associated with the key if one exists; if it does not, associates the result of invoking the value function with the key.
        Specified by:
        getIfAbsentPutWithKey in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        function - the function that provides the value if no mapping exists. The key will be passed as the argument to the function.
        Returns:
        the value associated with the key, if one exists, or the result of invoking function with key if not
      • updateValue

        public long updateValue​(K key,
                                long initialValueIfAbsent,
                                LongToLongFunction function)
        Description copied from interface: MutableObjectLongMap
        Updates or sets the value associated with the key by applying the function to the existing value, if one exists, or to the specified initial value if one does not.
        Specified by:
        updateValue in interface MutableObjectLongMap<K>
        Parameters:
        key - the key
        initialValueIfAbsent - the initial value to supply to the function if no mapping exists for the key
        function - the function that returns the updated value based on the current value or the initial value, if no value exists
        Returns:
        the new value associated with the key, either as a result of applying function to the value already associated with the key or as a result of applying it to initialValueIfAbsent and associating the result with key
      • addKeyValueAtIndex

        private void addKeyValueAtIndex​(K key,
                                        long value,
                                        int index)
      • withKeyValue

        public ObjectLongHashMap<K> withKeyValue​(K key1,
                                                 long value1)
        Description copied from interface: MutableObjectLongMap
        Associates a value with the specified key. If a value is already associated with the key in this map, it will be replaced with value.
        Specified by:
        withKeyValue in interface MutableObjectLongMap<K>
        Parameters:
        key1 - the key
        value1 - the value to associate with value
        Returns:
        this map
        See Also:
        #put(K, long)
      • withKeysValues

        public ObjectLongHashMap<K> withKeysValues​(K key1,
                                                   long value1,
                                                   K key2,
                                                   long value2)
      • withKeysValues

        public ObjectLongHashMap<K> withKeysValues​(K key1,
                                                   long value1,
                                                   K key2,
                                                   long value2,
                                                   K key3,
                                                   long value3)
      • withKeysValues

        public ObjectLongHashMap<K> withKeysValues​(K key1,
                                                   long value1,
                                                   K key2,
                                                   long value2,
                                                   K key3,
                                                   long value3,
                                                   K key4,
                                                   long value4)
      • toImmutable

        public ImmutableObjectLongMap<K> toImmutable()
        Description copied from interface: ObjectLongMap
        Returns a copy of this map that is immutable (if this map is mutable) or itself if it is already immutable.
        Specified by:
        toImmutable in interface ObjectLongMap<K>
        Returns:
        an immutable map that is equivalent to this one
      • get

        public long get​(java.lang.Object key)
        Description copied from interface: ObjectLongMap
        Retrieves the value associated with the key. If no mapping exists for the key, the default value (usually 0) is returned.
        Specified by:
        get in interface ObjectLongMap<K>
        Parameters:
        key - the key
        Returns:
        the value associated with the key, or the default value if no such mapping exists
      • getOrThrow

        public long getOrThrow​(java.lang.Object key)
        Description copied from interface: ObjectLongMap
        Retrieves the value associated with the key, throwing an IllegalStateException if no such mapping exists.
        Specified by:
        getOrThrow in interface ObjectLongMap<K>
        Parameters:
        key - the key
        Returns:
        the value associated with the key
      • getIfAbsent

        public long getIfAbsent​(java.lang.Object key,
                                long ifAbsent)
        Description copied from interface: ObjectLongMap
        Retrieves the value associated with the key, returning the specified default value if no such mapping exists.
        Specified by:
        getIfAbsent in interface ObjectLongMap<K>
        Parameters:
        key - the key
        ifAbsent - the default value to return if no mapping exists for key
        Returns:
        the value associated with the key, or ifAbsent if no such mapping exists.
      • containsKey

        public boolean containsKey​(java.lang.Object key)
        Description copied from interface: ObjectLongMap
        Returns whether or not the key is present in the map.
        Specified by:
        containsKey in interface ObjectLongMap<K>
        Parameters:
        key - the key
        Returns:
        if a mapping exists in this map for the key
      • containsValue

        public boolean containsValue​(long value)
        Description copied from interface: ObjectLongMap
        Returns whether or not this map contains the value.
        Specified by:
        containsValue in interface ObjectLongMap<K>
        Parameters:
        value - the value to test
        Returns:
        if this collection contains the value
      • forEachValue

        public void forEachValue​(LongProcedure procedure)
        Description copied from interface: ObjectLongMap
        Iterates through each value in this map.
        Specified by:
        forEachValue in interface ObjectLongMap<K>
        Parameters:
        procedure - the procedure to invoke for each value in this map.
      • forEachKey

        public void forEachKey​(Procedure<? super K> procedure)
        Description copied from interface: ObjectLongMap
        Iterates through each key in the map, invoking the procedure for each.
        Specified by:
        forEachKey in interface ObjectLongMap<K>
        Parameters:
        procedure - the procedure to invoke for each key
      • forEachKeyValue

        public void forEachKeyValue​(ObjectLongProcedure<? super K> procedure)
        Description copied from interface: ObjectLongMap
        Iterates through each key/value pair in the map, invoking the procedure for each.
        Specified by:
        forEachKeyValue in interface ObjectLongMap<K>
        Parameters:
        procedure - the procedure to invoke for each key/value pair
      • select

        public ObjectLongHashMap<K> select​(ObjectLongPredicate<? super K> predicate)
        Description copied from interface: ObjectLongMap
        Return a copy of this map containing only the key/value pairs that match the predicate.
        Specified by:
        select in interface MutableObjectLongMap<K>
        Specified by:
        select in interface ObjectLongMap<K>
        Parameters:
        predicate - the predicate to determine which key/value pairs in this map should be included in the returned map
        Returns:
        a copy of this map with the matching key/value pairs
      • reject

        public ObjectLongHashMap<K> reject​(ObjectLongPredicate<? super K> predicate)
        Description copied from interface: ObjectLongMap
        Return a copy of this map containing only the key/value pairs that do not match the predicate.
        Specified by:
        reject in interface MutableObjectLongMap<K>
        Specified by:
        reject in interface ObjectLongMap<K>
        Parameters:
        predicate - the predicate to determine which key/value pairs in this map should be excluded from the returned map
        Returns:
        a copy of this map without the matching key/value pairs
      • count

        public int count​(LongPredicate predicate)
        Description copied from interface: LongIterable
        Returns a count of the number of elements in the LongIterable that return true for the specified predicate.
        Specified by:
        count in interface LongIterable
      • anySatisfy

        public boolean anySatisfy​(LongPredicate predicate)
        Description copied from interface: LongIterable
        Returns true if any of the elements in the LongIterable return true for the specified predicate, otherwise returns false.
        Specified by:
        anySatisfy in interface LongIterable
      • allSatisfy

        public boolean allSatisfy​(LongPredicate predicate)
        Description copied from interface: LongIterable
        Returns true if all of the elements in the LongIterable return true for the specified predicate, otherwise returns false.
        Specified by:
        allSatisfy in interface LongIterable
      • noneSatisfy

        public boolean noneSatisfy​(LongPredicate predicate)
        Description copied from interface: LongIterable
        Returns true if none of the elements in the LongIterable return true for the specified predicate, otherwise returns false.
        Specified by:
        noneSatisfy in interface LongIterable
      • chunk

        public RichIterable<LongIterable> chunk​(int size)
        Description copied from interface: LongIterable
        Partitions elements in fixed size chunks.
        Specified by:
        chunk in interface LongIterable
        Parameters:
        size - the number of elements per chunk
        Returns:
        A RichIterable containing LongIterables of size size, except the last will be truncated if the elements don't divide evenly.
      • maxIfEmpty

        public long maxIfEmpty​(long defaultValue)
        Specified by:
        maxIfEmpty in interface LongIterable
      • minIfEmpty

        public long minIfEmpty​(long defaultValue)
        Specified by:
        minIfEmpty in interface LongIterable
      • writeExternal

        public void writeExternal​(java.io.ObjectOutput out)
                           throws java.io.IOException
        Specified by:
        writeExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
      • readExternal

        public void readExternal​(java.io.ObjectInput in)
                          throws java.io.IOException,
                                 java.lang.ClassNotFoundException
        Specified by:
        readExternal in interface java.io.Externalizable
        Throws:
        java.io.IOException
        java.lang.ClassNotFoundException
      • keysView

        public LazyIterable<K> keysView()
        Description copied from interface: ObjectLongMap
        Returns a view of the keys in this map. This iterable is backed by the map, so any modifications to the underlying map will be reflected in the keys returned by the iterable.
        Specified by:
        keysView in interface ObjectLongMap<K>
        Returns:
        a view of the keys in this map
      • keyValuesView

        public RichIterable<ObjectLongPair<K>> keyValuesView()
        Description copied from interface: ObjectLongMap
        Returns a view of the key/value pairs in this map. This iterable is backed by the map, so any modifications to the underlying map will be reflected in the pairs returned by the iterable.
        Specified by:
        keyValuesView in interface ObjectLongMap<K>
        Returns:
        a view of the keys in this map
      • compact

        public void compact()
        Rehashes every element in the set into a new backing table of the smallest possible size and eliminating removed sentinels.
      • rehashAndGrow

        private void rehashAndGrow()
      • rehash

        private void rehash​(int newCapacity)
      • probe

        int probe​(java.lang.Object element)
      • spread

        int spread​(java.lang.Object element)
      • nullSafeEquals

        private static boolean nullSafeEquals​(java.lang.Object value,
                                              java.lang.Object other)
      • allocateTable

        protected void allocateTable​(int sizeToAllocate)
      • isRemovedKey

        private static boolean isRemovedKey​(java.lang.Object key)
      • isNonSentinel

        private static <K> boolean isNonSentinel​(K key)
      • toNonSentinel

        private K toNonSentinel​(java.lang.Object key)
      • toSentinelIfNull

        private static java.lang.Object toSentinelIfNull​(java.lang.Object key)
      • maxOccupiedWithData

        private int maxOccupiedWithData()
      • keySet

        public java.util.Set<K> keySet()
        Description copied from interface: ObjectLongMap
        Returns a set containing all the keys in this map. The set is backed by the map, so any modifications to the returned set will affect this map.
        Specified by:
        keySet in interface ObjectLongMap<K>
        Returns:
        a mutable set containing the keys in this map
      • values

        public MutableLongCollection values()
        Description copied from interface: ObjectLongMap
        Returns the values in this map as a separate collection. The returned collection is backed by the map, so any changes made to the returned collection will affect the state of this map.
        Specified by:
        values in interface ObjectLongMap<K>
        Returns:
        the values as a collection backed by this map