All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.javaewah.LogicalElement Maven / Gradle / Ivy

Go to download

The bit array data structure is implemented in Java as the BitSet class. Unfortunately, this fails to scale without compression. JavaEWAH is a word-aligned compressed variant of the Java bitset class. It uses a 64-bit run-length encoding (RLE) compression scheme. The goal of word-aligned compression is not to achieve the best compression, but rather to improve query processing time. Hence, we try to save CPU cycles, maybe at the expense of storage. However, the EWAH scheme we implemented is always more efficient storage-wise than an uncompressed bitmap (implemented in Java as the BitSet class). Unlike some alternatives, javaewah does not rely on a patented scheme.

There is a newer version: 1.2.3
Show newest version
package com.googlecode.javaewah;

/*
 * Copyright 2009-2016, Daniel Lemire, Cliff Moon, David McIntosh, Robert Becho, Google Inc., Veronika Zenz, Owen Kaser, Gregory Ssi-Yan-Kai, Rory Graves
 * Licensed under the Apache License, Version 2.0.
 */

/**
 * A prototypical model for bitmaps. Used by the class FastAggregation. Users
 * should probably not be concerned by this class.
 *
 * @param  the type of element (e.g., a bitmap class)
 * @author Daniel Lemire
 */
public interface LogicalElement {
    /**
     * Compute the bitwise logical and
     *
     * @param le element
     * @return the result of the operation
     */
    T and(T le);

    /**
     * Compute the bitwise logical and not
     *
     * @param le element
     * @return the result of the operation
     */
    T andNot(T le);

    /**
     * Compute the bitwise logical not (in place)
     */
    void not();

    /**
     * Compute the bitwise logical or
     * @param le another element
     * @return the result of the operation
     */
    T or(T le);

    /**
     * How many logical bits does this element represent?
     *
     * @return the number of bits represented by this element
     */
    int sizeInBits();

    /**
     * Should report the storage requirement
     *
     * @return How many bytes
     * @since 0.6.2
     */
    int sizeInBytes();

    /**
     * Compute the bitwise logical Xor
     *
     * @param le element
     * @return the result of the operation
     */
    T xor(T le);

    /**
     * Compute the composition
     *
     * @param le another element
     * @return the result of the operation
     */
    T compose(T le);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy