Package com.carrotsearch.hppc

High Performance Primitive Collections (HPPC) library provides typical data structures (lists, stacks, maps) template-generated for all Java primitive types (byte, int, etc.) to conserve memory and boost performance.

See:
          Description

Interface Summary
ArraySizingStrategy Resizing (growth) strategy for array-backed buffers.
ByteByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteByteMap An associative container with unique binding from keys to a single value.
ByteCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteCharMap An associative container with unique binding from keys to a single value.
ByteCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
ByteContainer A generic container holding bytes.
ByteDeque A double-linked queue of bytes.
ByteDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteDoubleMap An associative container with unique binding from keys to a single value.
ByteFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteFloatMap An associative container with unique binding from keys to a single value.
ByteIndexedContainer An indexed container provides random access to elements based on an index.
ByteIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteIntMap An associative container with unique binding from keys to a single value.
ByteLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteLongMap An associative container with unique binding from keys to a single value.
ByteLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
ByteObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteObjectMap<VType> An associative container with unique binding from keys to a single value.
ByteSet A set of bytes.
ByteShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ByteShortMap An associative container with unique binding from keys to a single value.
CharByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharByteMap An associative container with unique binding from keys to a single value.
CharCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharCharMap An associative container with unique binding from keys to a single value.
CharCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
CharContainer A generic container holding chars.
CharDeque A double-linked queue of chars.
CharDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharDoubleMap An associative container with unique binding from keys to a single value.
CharFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharFloatMap An associative container with unique binding from keys to a single value.
CharIndexedContainer An indexed container provides random access to elements based on an index.
CharIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharIntMap An associative container with unique binding from keys to a single value.
CharLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharLongMap An associative container with unique binding from keys to a single value.
CharLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
CharObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharObjectMap<VType> An associative container with unique binding from keys to a single value.
CharSet A set of chars.
CharShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
CharShortMap An associative container with unique binding from keys to a single value.
DoubleByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleByteMap An associative container with unique binding from keys to a single value.
DoubleCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleCharMap An associative container with unique binding from keys to a single value.
DoubleCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
DoubleContainer A generic container holding doubles.
DoubleDeque A double-linked queue of doubles.
DoubleDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleDoubleMap An associative container with unique binding from keys to a single value.
DoubleFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleFloatMap An associative container with unique binding from keys to a single value.
DoubleIndexedContainer An indexed container provides random access to elements based on an index.
DoubleIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleIntMap An associative container with unique binding from keys to a single value.
DoubleLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleLongMap An associative container with unique binding from keys to a single value.
DoubleLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
DoubleObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleObjectMap<VType> An associative container with unique binding from keys to a single value.
DoubleSet A set of doubles.
DoubleShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
DoubleShortMap An associative container with unique binding from keys to a single value.
FloatByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatByteMap An associative container with unique binding from keys to a single value.
FloatCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatCharMap An associative container with unique binding from keys to a single value.
FloatCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
FloatContainer A generic container holding floats.
FloatDeque A double-linked queue of floats.
FloatDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatDoubleMap An associative container with unique binding from keys to a single value.
FloatFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatFloatMap An associative container with unique binding from keys to a single value.
FloatIndexedContainer An indexed container provides random access to elements based on an index.
FloatIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatIntMap An associative container with unique binding from keys to a single value.
FloatLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatLongMap An associative container with unique binding from keys to a single value.
FloatLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
FloatObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatObjectMap<VType> An associative container with unique binding from keys to a single value.
FloatSet A set of floats.
FloatShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
FloatShortMap An associative container with unique binding from keys to a single value.
IntByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntByteMap An associative container with unique binding from keys to a single value.
IntCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntCharMap An associative container with unique binding from keys to a single value.
IntCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
IntContainer A generic container holding ints.
IntDeque A double-linked queue of ints.
IntDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntDoubleMap An associative container with unique binding from keys to a single value.
IntFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntFloatMap An associative container with unique binding from keys to a single value.
IntIndexedContainer An indexed container provides random access to elements based on an index.
IntIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntIntMap An associative container with unique binding from keys to a single value.
IntLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntLongMap An associative container with unique binding from keys to a single value.
IntLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
IntObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntObjectMap<VType> An associative container with unique binding from keys to a single value.
IntSet A set of ints.
IntShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
IntShortMap An associative container with unique binding from keys to a single value.
KTypeCollection<KType> A collection allows basic, efficient operations on sets of elements (difference and intersection).
KTypeContainer<KType> A generic container holding KTypes.
KTypeDeque<KType> A double-linked queue of KTypes.
KTypeIndexedContainer<KType> An indexed container provides random access to elements based on an index.
KTypeLookupContainer<KType> Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
KTypeSet<KType> A set of KTypes.
KTypeVTypeAssociativeContainer<KType,VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
KTypeVTypeMap<KType,VType> An associative container with unique binding from keys to a single value.
LongByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongByteMap An associative container with unique binding from keys to a single value.
LongCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongCharMap An associative container with unique binding from keys to a single value.
LongCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
LongContainer A generic container holding longs.
LongDeque A double-linked queue of longs.
LongDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongDoubleMap An associative container with unique binding from keys to a single value.
LongFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongFloatMap An associative container with unique binding from keys to a single value.
LongIndexedContainer An indexed container provides random access to elements based on an index.
LongIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongIntMap An associative container with unique binding from keys to a single value.
LongLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongLongMap An associative container with unique binding from keys to a single value.
LongLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
LongObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongObjectMap<VType> An associative container with unique binding from keys to a single value.
LongSet A set of longs.
LongShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
LongShortMap An associative container with unique binding from keys to a single value.
ObjectByteAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectByteMap<KType> An associative container with unique binding from keys to a single value.
ObjectCharAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectCharMap<KType> An associative container with unique binding from keys to a single value.
ObjectCollection<KType> A collection allows basic, efficient operations on sets of elements (difference and intersection).
ObjectContainer<KType> A generic container holding KTypes.
ObjectDeque<KType> A double-linked queue of KTypes.
ObjectDoubleAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectDoubleMap<KType> An associative container with unique binding from keys to a single value.
ObjectFloatAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectFloatMap<KType> An associative container with unique binding from keys to a single value.
ObjectIndexedContainer<KType> An indexed container provides random access to elements based on an index.
ObjectIntAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectIntMap<KType> An associative container with unique binding from keys to a single value.
ObjectLongAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectLongMap<KType> An associative container with unique binding from keys to a single value.
ObjectLookupContainer<KType> Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
ObjectObjectAssociativeContainer<KType,VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectObjectMap<KType,VType> An associative container with unique binding from keys to a single value.
ObjectSet<KType> A set of KTypes.
ObjectShortAssociativeContainer<KType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ObjectShortMap<KType> An associative container with unique binding from keys to a single value.
ShortByteAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortByteMap An associative container with unique binding from keys to a single value.
ShortCharAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortCharMap An associative container with unique binding from keys to a single value.
ShortCollection A collection allows basic, efficient operations on sets of elements (difference and intersection).
ShortContainer A generic container holding shorts.
ShortDeque A double-linked queue of shorts.
ShortDoubleAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortDoubleMap An associative container with unique binding from keys to a single value.
ShortFloatAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortFloatMap An associative container with unique binding from keys to a single value.
ShortIndexedContainer An indexed container provides random access to elements based on an index.
ShortIntAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortIntMap An associative container with unique binding from keys to a single value.
ShortLongAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortLongMap An associative container with unique binding from keys to a single value.
ShortLookupContainer Marker interface for containers that can check if they contain a given object in at least time O(log n) and ideally in amortized constant time O(1).
ShortObjectAssociativeContainer<VType> An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortObjectMap<VType> An associative container with unique binding from keys to a single value.
ShortSet A set of shorts.
ShortShortAssociativeContainer An associative container (alias: map, dictionary) from keys to (one or possibly more) values.
ShortShortMap An associative container with unique binding from keys to a single value.
 

Class Summary
BitSet An "open" BitSet implementation that allows direct access to the array of words storing the bits.
BitSetIterator An iterator to iterate over set bits in an BitSet.
BoundedProportionalArraySizingStrategy Array resizing proportional to the current buffer size, optionally kept within the given minimum and maximum growth limits.
ByteArrayDeque An array-backed deque (doubly linked queue) of bytes.
ByteArrayList An array-backed list of bytes.
ByteByteOpenHashMap A hash map of byte to byte, implemented using open addressing with linear probing for collision resolution.
ByteCharOpenHashMap A hash map of byte to char, implemented using open addressing with linear probing for collision resolution.
ByteDoubleOpenHashMap A hash map of byte to double, implemented using open addressing with linear probing for collision resolution.
ByteFloatOpenHashMap A hash map of byte to float, implemented using open addressing with linear probing for collision resolution.
ByteIntOpenHashMap A hash map of byte to int, implemented using open addressing with linear probing for collision resolution.
ByteLongOpenHashMap A hash map of byte to long, implemented using open addressing with linear probing for collision resolution.
ByteObjectOpenHashMap<VType> A hash map of byte to VType, implemented using open addressing with linear probing for collision resolution.
ByteOpenHashSet A hash set of bytes, implemented using using open addressing with linear probing for collision resolution.
ByteShortOpenHashMap A hash map of byte to short, implemented using open addressing with linear probing for collision resolution.
ByteStack An extension to ObjectArrayList adding stack-related utility methods.
CharArrayDeque An array-backed deque (doubly linked queue) of chars.
CharArrayList An array-backed list of chars.
CharByteOpenHashMap A hash map of char to byte, implemented using open addressing with linear probing for collision resolution.
CharCharOpenHashMap A hash map of char to char, implemented using open addressing with linear probing for collision resolution.
CharDoubleOpenHashMap A hash map of char to double, implemented using open addressing with linear probing for collision resolution.
CharFloatOpenHashMap A hash map of char to float, implemented using open addressing with linear probing for collision resolution.
CharIntOpenHashMap A hash map of char to int, implemented using open addressing with linear probing for collision resolution.
CharLongOpenHashMap A hash map of char to long, implemented using open addressing with linear probing for collision resolution.
CharObjectOpenHashMap<VType> A hash map of char to VType, implemented using open addressing with linear probing for collision resolution.
CharOpenHashSet A hash set of chars, implemented using using open addressing with linear probing for collision resolution.
CharShortOpenHashMap A hash map of char to short, implemented using open addressing with linear probing for collision resolution.
CharStack An extension to ObjectArrayList adding stack-related utility methods.
DoubleArrayDeque An array-backed deque (doubly linked queue) of doubles.
DoubleArrayList An array-backed list of doubles.
DoubleByteOpenHashMap A hash map of double to byte, implemented using open addressing with linear probing for collision resolution.
DoubleCharOpenHashMap A hash map of double to char, implemented using open addressing with linear probing for collision resolution.
DoubleDoubleOpenHashMap A hash map of double to double, implemented using open addressing with linear probing for collision resolution.
DoubleFloatOpenHashMap A hash map of double to float, implemented using open addressing with linear probing for collision resolution.
DoubleIntOpenHashMap A hash map of double to int, implemented using open addressing with linear probing for collision resolution.
DoubleLongOpenHashMap A hash map of double to long, implemented using open addressing with linear probing for collision resolution.
DoubleObjectOpenHashMap<VType> A hash map of double to VType, implemented using open addressing with linear probing for collision resolution.
DoubleOpenHashSet A hash set of doubles, implemented using using open addressing with linear probing for collision resolution.
DoubleShortOpenHashMap A hash map of double to short, implemented using open addressing with linear probing for collision resolution.
DoubleStack An extension to ObjectArrayList adding stack-related utility methods.
EmptyArrays Empty arrays.
FloatArrayDeque An array-backed deque (doubly linked queue) of floats.
FloatArrayList An array-backed list of floats.
FloatByteOpenHashMap A hash map of float to byte, implemented using open addressing with linear probing for collision resolution.
FloatCharOpenHashMap A hash map of float to char, implemented using open addressing with linear probing for collision resolution.
FloatDoubleOpenHashMap A hash map of float to double, implemented using open addressing with linear probing for collision resolution.
FloatFloatOpenHashMap A hash map of float to float, implemented using open addressing with linear probing for collision resolution.
FloatIntOpenHashMap A hash map of float to int, implemented using open addressing with linear probing for collision resolution.
FloatLongOpenHashMap A hash map of float to long, implemented using open addressing with linear probing for collision resolution.
FloatObjectOpenHashMap<VType> A hash map of float to VType, implemented using open addressing with linear probing for collision resolution.
FloatOpenHashSet A hash set of floats, implemented using using open addressing with linear probing for collision resolution.
FloatShortOpenHashMap A hash map of float to short, implemented using open addressing with linear probing for collision resolution.
FloatStack An extension to ObjectArrayList adding stack-related utility methods.
IntArrayDeque An array-backed deque (doubly linked queue) of ints.
IntArrayList An array-backed list of ints.
IntByteOpenHashMap A hash map of int to byte, implemented using open addressing with linear probing for collision resolution.
IntCharOpenHashMap A hash map of int to char, implemented using open addressing with linear probing for collision resolution.
IntDoubleLinkedSet A double-linked set of int values.
IntDoubleOpenHashMap A hash map of int to double, implemented using open addressing with linear probing for collision resolution.
IntFloatOpenHashMap A hash map of int to float, implemented using open addressing with linear probing for collision resolution.
IntIntOpenHashMap A hash map of int to int, implemented using open addressing with linear probing for collision resolution.
IntLongOpenHashMap A hash map of int to long, implemented using open addressing with linear probing for collision resolution.
IntObjectOpenHashMap<VType> A hash map of int to VType, implemented using open addressing with linear probing for collision resolution.
IntOpenHashSet A hash set of ints, implemented using using open addressing with linear probing for collision resolution.
IntShortOpenHashMap A hash map of int to short, implemented using open addressing with linear probing for collision resolution.
IntStack An extension to ObjectArrayList adding stack-related utility methods.
KTypeArrayDeque<KType> An array-backed deque (doubly linked queue) of KTypes.
KTypeArrayList<KType> An array-backed list of KTypes.
KTypeOpenHashSet<KType> A hash set of KTypes, implemented using using open addressing with linear probing for collision resolution.
KTypeStack<KType> An extension to ObjectArrayList adding stack-related utility methods.
KTypeVTypeOpenHashMap<KType,VType> A hash map of KType to VType, implemented using open addressing with linear probing for collision resolution.
LongArrayDeque An array-backed deque (doubly linked queue) of longs.
LongArrayList An array-backed list of longs.
LongByteOpenHashMap A hash map of long to byte, implemented using open addressing with linear probing for collision resolution.
LongCharOpenHashMap A hash map of long to char, implemented using open addressing with linear probing for collision resolution.
LongDoubleOpenHashMap A hash map of long to double, implemented using open addressing with linear probing for collision resolution.
LongFloatOpenHashMap A hash map of long to float, implemented using open addressing with linear probing for collision resolution.
LongIntOpenHashMap A hash map of long to int, implemented using open addressing with linear probing for collision resolution.
LongLongOpenHashMap A hash map of long to long, implemented using open addressing with linear probing for collision resolution.
LongObjectOpenHashMap<VType> A hash map of long to VType, implemented using open addressing with linear probing for collision resolution.
LongOpenHashSet A hash set of longs, implemented using using open addressing with linear probing for collision resolution.
LongShortOpenHashMap A hash map of long to short, implemented using open addressing with linear probing for collision resolution.
LongStack An extension to ObjectArrayList adding stack-related utility methods.
ObjectArrayDeque<KType> An array-backed deque (doubly linked queue) of KTypes.
ObjectArrayList<KType> An array-backed list of KTypes.
ObjectByteOpenHashMap<KType> A hash map of KType to byte, implemented using open addressing with linear probing for collision resolution.
ObjectCharOpenHashMap<KType> A hash map of KType to char, implemented using open addressing with linear probing for collision resolution.
ObjectDoubleOpenHashMap<KType> A hash map of KType to double, implemented using open addressing with linear probing for collision resolution.
ObjectFloatOpenHashMap<KType> A hash map of KType to float, implemented using open addressing with linear probing for collision resolution.
ObjectIntOpenHashMap<KType> A hash map of KType to int, implemented using open addressing with linear probing for collision resolution.
ObjectLongOpenHashMap<KType> A hash map of KType to long, implemented using open addressing with linear probing for collision resolution.
ObjectObjectOpenHashMap<KType,VType> A hash map of KType to VType, implemented using open addressing with linear probing for collision resolution.
ObjectOpenHashSet<KType> A hash set of KTypes, implemented using using open addressing with linear probing for collision resolution.
ObjectShortOpenHashMap<KType> A hash map of KType to short, implemented using open addressing with linear probing for collision resolution.
ObjectStack<KType> An extension to ObjectArrayList adding stack-related utility methods.
ShortArrayDeque An array-backed deque (doubly linked queue) of shorts.
ShortArrayList An array-backed list of shorts.
ShortByteOpenHashMap A hash map of short to byte, implemented using open addressing with linear probing for collision resolution.
ShortCharOpenHashMap A hash map of short to char, implemented using open addressing with linear probing for collision resolution.
ShortDoubleOpenHashMap A hash map of short to double, implemented using open addressing with linear probing for collision resolution.
ShortFloatOpenHashMap A hash map of short to float, implemented using open addressing with linear probing for collision resolution.
ShortIntOpenHashMap A hash map of short to int, implemented using open addressing with linear probing for collision resolution.
ShortLongOpenHashMap A hash map of short to long, implemented using open addressing with linear probing for collision resolution.
ShortObjectOpenHashMap<VType> A hash map of short to VType, implemented using open addressing with linear probing for collision resolution.
ShortOpenHashSet A hash set of shorts, implemented using using open addressing with linear probing for collision resolution.
ShortShortOpenHashMap A hash map of short to short, implemented using open addressing with linear probing for collision resolution.
ShortStack An extension to ObjectArrayList adding stack-related utility methods.
XorShiftRandom XorShift pseudo random number generator.
 

Package com.carrotsearch.hppc Description

High Performance Primitive Collections (HPPC) library provides typical data structures (lists, stacks, maps) template-generated for all Java primitive types (byte, int, etc.) to conserve memory and boost performance.

Why HPPC?

The Java Collections package is in many ways excellent, but it cannot be used for primitive types and autoboxing introduced in Java 1.5 kills the runtime performance (increased memory use, garbage collector overhead).

This library has different design goals than Java Collections (and many other collection packages). For example, the internals of each class are open and subject to free hacking and tuning up to one's wishes.

Why not other primitive collection libraries?

There are a few projects implementing collections over primitive types: fastutil, PCJ, GNU Trove, Apache Mahout (ported COLT collections), Apache Primitive Collections.

Some of these are LGPL-ed, a license type many commercial companies tend to avoid at all costs; other projects above are no longer maintained or complete. There is also a tendency to write tightly encapsulated code (private internals), implementing the API of standard Java packages and striving for fast error-recovery. Although these are good programming practices, they are not always practical (in many computationally intense applications access to the collection class' internals is a bliss). HPPC has a slightly different set of goals.

Assumptions and goals of HPPC

We assume that:

From these assumptions stem the following design drivers:

Design and implementation assumptions

Interfaces and their relation to Java Collections API

HPPC is not strictly modeled after Java Collections API, although we did try to make the APIs look similar enough for comfortable use. One particular thing largerly missing in HPPC are view projections (sublists or views over the collection of keys or values). Certain classes provide such views (like ObjectObjectOpenHashMap), but for the most part, specific methods are provided that accept ranges or closure-like filters. If performance is still unsatisfactory, the internals of each class are available for direct manipulation.

Rough relationships between Java Collections classes and HPPC classes are presented in the table below.

Relationships between HPPC and Java Collections.
Java Collections HPPC (primitives) HPPC (generics)
bit sets java.util.BitSet BitSet n/a
array-backed lists java.util.ArrayList, java.util.Vector [type]ArrayList ObjectArrayList<T>
stacks java.util.Stack [type]Stack ObjectStack<T>
deques java.util.ArrayDeque [type]ArrayDeque ObjectArrayDeque<T>
hash maps (dictionaries) java.util.HashMap [keyType][valueType]OpenHashMap ObjectObjectOpenHashMap<K, V>
[keyType]ObjectOpenHashMap<V>
Object[valueType]OpenHashMap<K>

The method-level API of the corresponding types is also similar, but distinct differences exist (consult the JavaDoc of each class).

Interfaces and container inheritance

HPPC's interfaces are modeled to encapsulate the common functionality enforced from all the classes that implement a given interface. The interface hierarchy is loosely inspired by STL.

An overview of interfaces and their relationship to data structures implemented in HPPC is depicted graphically in ObjectContainer.



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