com.carrotsearch.hppc
Class ByteOpenHashSet

java.lang.Object
  extended by com.carrotsearch.hppc.ByteOpenHashSet
All Implemented Interfaces:
ByteCollection, ByteContainer, ByteLookupContainer, ByteSet, java.lang.Cloneable, java.lang.Iterable<ByteCursor>

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

A hash set of bytes, 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.
 byte[] 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
ByteOpenHashSet()
          Creates a hash set with the default capacity of 16, load factor of 0.75f.
ByteOpenHashSet(ByteContainer container)
          Creates a hash set from elements of another container.
ByteOpenHashSet(int initialCapacity)
          Creates a hash set with the given capacity, load factor of 0.75f.
ByteOpenHashSet(int initialCapacity, float loadFactor)
          Creates a hash set with the given capacity and load factor.
 
Method Summary
 int add(byte... elements)
          Vararg-signature method for adding elements to this set.
 boolean add(byte e)
          Adds k to the set.
 int add(byte e1, byte e2)
          Adds two elements to the set.
 int addAll(ByteContainer container)
          Adds all elements from a given container to this set.
 int addAll(java.lang.Iterable<? extends ByteCursor> iterable)
          Adds all elements from a given iterable to this set.
 void clear()
          Removes all elements from this collection.
 ByteOpenHashSet clone()
          
 boolean contains(byte 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 BytePredicate>
T
forEach(T predicate)
          Applies a predicate to container elements as long, as the predicate returns true.
<T extends ByteProcedure>
T
forEach(T procedure)
          Applies a procedure to all container elements.
static ByteOpenHashSet from(byte... elements)
          Create a set from a variable number of arguments or an array of byte.
static ByteOpenHashSet from(ByteContainer container)
          Create a set from elements of another container.
 int hashCode()
          
 boolean isEmpty()
          Shortcut for size() == 0.
 java.util.Iterator<ByteCursor> iterator()
          Returns an iterator to a cursor traversing the collection.
 byte lget()
          Returns the last value saved in a call to contains(byte).
static ByteOpenHashSet newInstance()
          Returns a new object of this class with no need to declare generic type (shortcut instead of using a constructor).
static ByteOpenHashSet 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(byte key)
          An alias for the (preferred) removeAllOccurrences(byte).
 int removeAll(ByteLookupContainer c)
          Default implementation uses a predicate for removal.
 int removeAll(BytePredicate predicate)
          Removes all elements in this collection for which the given predicate returns true.
 int removeAllOccurrences(byte key)
          Removes all occurrences of e from this collection.
 int retainAll(ByteLookupContainer c)
          Default implementation uses a predicate for retaining.
 int retainAll(BytePredicate predicate)
          Default implementation redirects to ByteCollection.removeAll(BytePredicate) 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.
 byte[] 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.ByteCollection
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 byte[] 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

ByteOpenHashSet

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


ByteOpenHashSet

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


ByteOpenHashSet

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


ByteOpenHashSet

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

Method Detail

add

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

Specified by:
add in interface ByteSet
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(byte e1,
               byte e2)
Adds two elements to the set.


add

public int add(byte... 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(ByteContainer 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 ByteCursor> 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(byte key)
Removes all occurrences of e from this collection.

Specified by:
removeAllOccurrences in interface ByteCollection
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(byte key)
An alias for the (preferred) removeAllOccurrences(byte).


shiftConflictingKeys

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


lget

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

See Also:
contains(byte)

contains

public boolean contains(byte 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 ByteContainer
Specified by:
contains in interface ByteLookupContainer
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 ByteCollection

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 ByteContainer

isEmpty

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

Specified by:
isEmpty in interface ByteContainer

hashCode

public int hashCode()

Specified by:
hashCode in interface ByteSet
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 ByteSet
Overrides:
equals in class java.lang.Object

iterator

public java.util.Iterator<ByteCursor> 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 (ByteCursor<byte> c : container) {
   System.out.println("index=" + c.index + " value=" + c.value);
 }
 

Specified by:
iterator in interface ByteContainer
Specified by:
iterator in interface java.lang.Iterable<ByteCursor>

forEach

public <T extends ByteProcedure> T forEach(T procedure)
Applies a procedure to all container elements. Returns the argument (any subclass of ByteProcedure. 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 ByteContainer

toArray

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

Specified by:
toArray in interface ByteContainer

clone

public ByteOpenHashSet clone()

Overrides:
clone in class java.lang.Object

forEach

public <T extends BytePredicate> 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 ByteContainer

removeAll

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

Specified by:
removeAll in interface ByteCollection

from

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


from

public static ByteOpenHashSet from(ByteContainer container)
Create a set from elements of another container.


newInstance

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


newInstanceWithCapacity

public static ByteOpenHashSet 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(ByteLookupContainer c)
Default implementation uses a predicate for removal.

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

retainAll

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

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

retainAll

public int retainAll(BytePredicate predicate)
Default implementation redirects to ByteCollection.removeAll(BytePredicate) and negates the predicate.

Specified by:
retainAll in interface ByteCollection

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.