com.carrotsearch.hppc
Class FloatOpenHashSet

java.lang.Object
  extended by com.carrotsearch.hppc.FloatOpenHashSet
All Implemented Interfaces:
FloatCollection, FloatContainer, FloatLookupContainer, FloatSet, java.lang.Cloneable, java.lang.Iterable<FloatCursor>

@Generated(date="2011-11-28T23:36:05+0000",
           value="HPPC generated from: FloatOpenHashSet.java")
public class FloatOpenHashSet
extends java.lang.Object
implements FloatLookupContainer, FloatSet, java.lang.Cloneable

A hash set of floats, implemented using using open addressing with linear probing for collision resolution.

The internal buffers of this implementation (keys), allocated) are always allocated to the nearest size that is a power of two. When the capacity exceeds the given load factor, the buffer size is doubled.

See ObjectOpenHashSet class for API similarities and differences against Java Collections.

Important node. The implementation uses power-of-two tables and linear probing, which may cause poor performance (many collisions) if hash values are not properly distributed. This implementation uses MurmurHash3 for rehashing keys.

Author:
This code is inspired by the collaboration and implementation in the fastutil project.

Field Summary
 boolean[] allocated
          Information if an entry (slot) in the keys table is allocated or empty.
 int assigned
          Cached number of assigned slots in allocated.
static int DEFAULT_CAPACITY
          Default capacity.
static float DEFAULT_LOAD_FACTOR
          Default load factor.
 float[] keys
          Hash-indexed array holding all set entries.
 float loadFactor
          The load factor for this set (fraction of allocated or deleted slots before the buffers must be rehashed or reallocated).
static int MIN_CAPACITY
          Minimum capacity for the set.
 
Constructor Summary
FloatOpenHashSet()
          Creates a hash set with the default capacity of 16, load factor of 0.75f.
FloatOpenHashSet(FloatContainer container)
          Creates a hash set from elements of another container.
FloatOpenHashSet(int initialCapacity)
          Creates a hash set with the given capacity, load factor of 0.75f.
FloatOpenHashSet(int initialCapacity, float loadFactor)
          Creates a hash set with the given capacity and load factor.
 
Method Summary
 int add(float... elements)
          Vararg-signature method for adding elements to this set.
 boolean add(float e)
          Adds k to the set.
 int add(float e1, float e2)
          Adds two elements to the set.
 int addAll(FloatContainer container)
          Adds all elements from a given container to this set.
 int addAll(java.lang.Iterable<? extends FloatCursor> iterable)
          Adds all elements from a given iterable to this set.
 void clear()
          Removes all elements from this collection.
 FloatOpenHashSet clone()
          
 boolean contains(float key)
          Lookup a given element in the container.
 boolean equals(java.lang.Object obj)
          Compares the specified object with this set for equality.
<T extends FloatPredicate>
T
forEach(T predicate)
          Applies a predicate to container elements as long, as the predicate returns true.
<T extends FloatProcedure>
T
forEach(T procedure)
          Applies a procedure to all container elements.
static FloatOpenHashSet from(float... elements)
          Create a set from a variable number of arguments or an array of float.
static FloatOpenHashSet from(FloatContainer container)
          Create a set from elements of another container.
 int hashCode()
          
 boolean isEmpty()
          Shortcut for size() == 0.
 java.util.Iterator<FloatCursor> iterator()
          Returns an iterator to a cursor traversing the collection.
 float lget()
          Returns the last value saved in a call to contains(float).
static FloatOpenHashSet newInstance()
          Returns a new object of this class with no need to declare generic type (shortcut instead of using a constructor).
static FloatOpenHashSet newInstanceWithCapacity(int initialCapacity, float loadFactor)
          Returns a new object of this class with no need to declare generic type (shortcut instead of using a constructor).
protected  int nextCapacity(int current)
          Return the next possible capacity, counting from the current buffers' size.
 boolean remove(float key)
          An alias for the (preferred) removeAllOccurrences(float).
 int removeAll(FloatLookupContainer c)
          Default implementation uses a predicate for removal.
 int removeAll(FloatPredicate predicate)
          Removes all elements in this collection for which the given predicate returns true.
 int removeAllOccurrences(float key)
          Removes all occurrences of e from this collection.
 int retainAll(FloatLookupContainer c)
          Default implementation uses a predicate for retaining.
 int retainAll(FloatPredicate predicate)
          Default implementation redirects to FloatCollection.removeAll(FloatPredicate) and negates the predicate.
protected  int roundCapacity(int requestedCapacity)
          Round the capacity to the next allowed value.
protected  void shiftConflictingKeys(int slotCurr)
          Shift all the slot-conflicting keys allocated to (and including) slot.
 int size()
          Return the current number of elements in this container.
 float[] toArray()
          Default implementation of copying to an array.
 java.lang.String toString()
          Convert the contents of this container to a human-friendly string.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.carrotsearch.hppc.FloatCollection
removeAll, retainAll, retainAll
 

Field Detail

DEFAULT_CAPACITY

public static final int DEFAULT_CAPACITY
Default capacity.

See Also:
Constant Field Values

MIN_CAPACITY

public static final int MIN_CAPACITY
Minimum capacity for the set.

See Also:
Constant Field Values

DEFAULT_LOAD_FACTOR

public static final float DEFAULT_LOAD_FACTOR
Default load factor.

See Also:
Constant Field Values

keys

public float[] keys
Hash-indexed array holding all set entries.

See Also:
allocated

allocated

public boolean[] allocated
Information if an entry (slot) in the keys table is allocated or empty.

See Also:
assigned

assigned

public int assigned
Cached number of assigned slots in allocated.


loadFactor

public final float loadFactor
The load factor for this set (fraction of allocated or deleted slots before the buffers must be rehashed or reallocated).

Constructor Detail

FloatOpenHashSet

public FloatOpenHashSet()
Creates a hash set with the default capacity of 16, load factor of 0.75f. `


FloatOpenHashSet

public FloatOpenHashSet(int initialCapacity)
Creates a hash set with the given capacity, load factor of 0.75f.


FloatOpenHashSet

public FloatOpenHashSet(int initialCapacity,
                        float loadFactor)
Creates a hash set with the given capacity and load factor.


FloatOpenHashSet

public FloatOpenHashSet(FloatContainer container)
Creates a hash set from elements of another container. Default load factor is used.

Method Detail

add

public boolean add(float e)
Adds k to the set.

Specified by:
add in interface FloatSet
Returns:
Returns true if this element was not part of the set before. Returns false if an equal element is part of the set, and replaces the existing equal element with the argument (if keys are object types).

add

public int add(float e1,
               float e2)
Adds two elements to the set.


add

public int add(float... elements)
Vararg-signature method for adding elements to this set.

This method is handy, but costly if used in tight loops (anonymous array passing)

Returns:
Returns the number of elements that were added to the set (were not present in the set).

addAll

public final int addAll(FloatContainer container)
Adds all elements from a given container to this set.

Returns:
Returns the number of elements actually added as a result of this call (not previously present in the set).

addAll

public final int addAll(java.lang.Iterable<? extends FloatCursor> iterable)
Adds all elements from a given iterable to this set.

Returns:
Returns the number of elements actually added as a result of this call (not previously present in the set).

removeAllOccurrences

public int removeAllOccurrences(float key)
Removes all occurrences of e from this collection.

Specified by:
removeAllOccurrences in interface FloatCollection
Parameters:
key - Element to be removed from this collection, if present.
Returns:
The number of removed elements as a result of this call.

remove

public boolean remove(float key)
An alias for the (preferred) removeAllOccurrences(float).


shiftConflictingKeys

protected final void shiftConflictingKeys(int slotCurr)
Shift all the slot-conflicting keys allocated to (and including) slot.


lget

public float lget()
Returns the last value saved in a call to contains(float).

See Also:
contains(float)

contains

public boolean contains(float key)
Lookup a given element in the container. This operation has no speed guarantees (may be linear with respect to the size of this container).

Saves the associated value for fast access using lget().

 if (map.contains(key))
   value = map.lget(); 
 

Specified by:
contains in interface FloatContainer
Specified by:
contains in interface FloatLookupContainer
Returns:
Returns true if this container has an element equal to e.

roundCapacity

protected int roundCapacity(int requestedCapacity)
Round the capacity to the next allowed value.


nextCapacity

protected int nextCapacity(int current)
Return the next possible capacity, counting from the current buffers' size.


clear

public void clear()
Removes all elements from this collection.

Does not release internal buffers.

Specified by:
clear in interface FloatCollection

size

public int size()
Return the current number of elements in this container. The time for calculating the container's size may take O(n) time, although implementing classes should try to maintain the current size and return in constant time.

Specified by:
size in interface FloatContainer

isEmpty

public boolean isEmpty()
Shortcut for size() == 0.

Specified by:
isEmpty in interface FloatContainer

hashCode

public int hashCode()

Specified by:
hashCode in interface FloatSet
Overrides:
hashCode in class java.lang.Object
Returns:
A hash code of elements stored in the set. The hash code is defined identically to Set.hashCode() (sum of hash codes of elements within the set). Because sum is commutative, this ensures that different order of elements in a set does not affect the hash code.

equals

public boolean equals(java.lang.Object obj)
Compares the specified object with this set for equality. Returns true if and only if the specified object is also a ObjectSet and both objects contains exactly the same objects.

Specified by:
equals in interface FloatSet
Overrides:
equals in class java.lang.Object

iterator

public java.util.Iterator<FloatCursor> iterator()
Returns an iterator to a cursor traversing the collection. The order of traversal is not defined. More than one cursor may be active at a time. The behavior of iterators is undefined if structural changes are made to the underlying collection.

The iterator is implemented as a cursor and it returns the same cursor instance on every call to Iterator.next() (to avoid boxing of primitive types). To read the current list's value (or index in the list) use the cursor's public fields. An example is shown below.

 for (FloatCursor<float> c : container) {
   System.out.println("index=" + c.index + " value=" + c.value);
 }
 

Specified by:
iterator in interface FloatContainer
Specified by:
iterator in interface java.lang.Iterable<FloatCursor>

forEach

public <T extends FloatProcedure> T forEach(T procedure)
Applies a procedure to all container elements. Returns the argument (any subclass of FloatProcedure. This lets the caller to call methods of the argument by chaining the call (even if the argument is an anonymous type) to retrieve computed values, for example (IntContainer):
 int count = container.forEach(new IntProcedure() {
      int count; // this is a field declaration in an anonymous class.
      public void apply(int value) { count++; }}).count;
 

Specified by:
forEach in interface FloatContainer

toArray

public final float[] toArray()
Default implementation of copying to an array.

Specified by:
toArray in interface FloatContainer

clone

public FloatOpenHashSet clone()

Overrides:
clone in class java.lang.Object

forEach

public <T extends FloatPredicate> T forEach(T predicate)
Applies a predicate to container elements as long, as the predicate returns true. The iteration is interrupted otherwise.

Specified by:
forEach in interface FloatContainer

removeAll

public int removeAll(FloatPredicate predicate)
Removes all elements in this collection for which the given predicate returns true.

Specified by:
removeAll in interface FloatCollection

from

public static FloatOpenHashSet from(float... elements)
Create a set from a variable number of arguments or an array of float. The elements are copied from the argument to the internal buffer.


from

public static FloatOpenHashSet from(FloatContainer container)
Create a set from elements of another container.


newInstance

public static FloatOpenHashSet newInstance()
Returns a new object of this class with no need to declare generic type (shortcut instead of using a constructor).


newInstanceWithCapacity

public static FloatOpenHashSet newInstanceWithCapacity(int initialCapacity,
                                                       float loadFactor)
Returns a new object of this class with no need to declare generic type (shortcut instead of using a constructor).


removeAll

public int removeAll(FloatLookupContainer c)
Default implementation uses a predicate for removal.

Specified by:
removeAll in interface FloatCollection
Returns:
Returns the number of removed elements.

retainAll

public int retainAll(FloatLookupContainer c)
Default implementation uses a predicate for retaining.

Specified by:
retainAll in interface FloatCollection
Returns:
Returns the number of removed elements.

retainAll

public int retainAll(FloatPredicate predicate)
Default implementation redirects to FloatCollection.removeAll(FloatPredicate) and negates the predicate.

Specified by:
retainAll in interface FloatCollection

toString

public java.lang.String toString()
Convert the contents of this container to a human-friendly string.

Overrides:
toString in class java.lang.Object


Copyright © 2011 Carrot Search s.c.. All Rights Reserved.