Package me.lemire.integercompression
Class Simple9
java.lang.Object
me.lemire.integercompression.Simple9
- All Implemented Interfaces:
IntegerCODEC,SkippableIntegerCODEC
This is an implementation of the popular Simple9 scheme. It is limited to
28-bit integers (between 0 and 2^28-1).
Note that this does not use differential coding: if you are working on sorted
lists, you must compute the deltas separately.
- Author:
- Daniel Lemire
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Compress data from an array to another array.voidheadlessCompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Compress data from an array to another array.voidheadlessUncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int outlength) Uncompress data from an array to another array.toString()voiduncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Uncompress data from an array to another array.
-
Constructor Details
-
Simple9
public Simple9()
-
-
Method Details
-
headlessCompress
public void headlessCompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos) Description copied from interface:SkippableIntegerCODECCompress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 ints (inlength = 12) are compressed to 3 ints, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference. Implementation note: contrary toIntegerCODEC.compress(int[], me.lemire.integercompression.IntWrapper, int, int[], me.lemire.integercompression.IntWrapper), this may skip writing information about the number of encoded integers.- Specified by:
headlessCompressin interfaceSkippableIntegerCODEC- Parameters:
in- input arrayinpos- where to start reading in the arrayinlength- how many integers to compressout- output arrayoutpos- where to write in the output array
-
headlessUncompress
public void headlessUncompress(int[] in, IntWrapper inpos, int inlength, int[] out, IntWrapper outpos, int outlength) Description copied from interface:SkippableIntegerCODECUncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
headlessUncompressin interfaceSkippableIntegerCODEC- Parameters:
in- array containing data in compressed forminpos- where to start reading in the arrayinlength- length of the compressed data (ignored by some schemes)out- array where to write the uncompressed outputoutpos- where to start writing the uncompressed output in outoutlength- number of integers we want to decode. May be less than the actual number of compressed integers
-
compress
Description copied from interface:IntegerCODECCompress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 ints (inlength = 12) are compressed to 3 ints, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference.- Specified by:
compressin interfaceIntegerCODEC- Parameters:
in- input arrayinpos- where to start reading in the arrayinlength- how many integers to compressout- output arrayoutpos- where to write in the output array
-
uncompress
Description copied from interface:IntegerCODECUncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
uncompressin interfaceIntegerCODEC- Parameters:
in- array containing data in compressed forminpos- where to start reading in the arrayinlength- length of the compressed data (ignored by some schemes)out- array where to write the compressed outputoutpos- where to start writing the uncompressed output in out
-
toString
-