DSI utils

The DSI utilities are a mish mash of classes accumulated during the last ten years in projects developed at the former DSI (Dipartimento di Scienze dell'Informazione, i.e., Information Sciences Department), now DI (Dipartimento di Informatica, i.e., Informatics Department) of the Università degli Studi di Milano. They were originally distributed in several projects (mainly in MG4J) but we finally decided to gather all the material in a single place.

The DSI utilities are distributed under the GNU Lesser General Public License.

# Highlights

The implementations available are a bit eclectic due to the particular kind of applications we developed. Very broadly, we have:

- Implementations of pseudorandom number generators. See the {@linkplain it.unimi.dsi.util package documentation} for details.
- {@link it.unimi.dsi.bits.BitVector} and its implementations—a high-performance but flexible set of bit vector classes.
- A {@link it.unimi.dsi.compression} package containing codecs for several types of encodings.
- {@link it.unimi.dsi.logging.ProgressLogger}, a flexible logger with statistics marking the progress of the (many) classes we use that require hours of computation.
- {@link it.unimi.dsi.lang.ObjectParser}, a class making it easy to specify complex objects on the command line.
- {@link it.unimi.dsi.lang.MutableString}, our answer to the Java {@link java.lang.String} class.
- The {@link it.unimi.dsi.io I/O package}, containing fast version of several classes existing in {@link java.io}, many useful classes to read easily text data (e.g., {@link it.unimi.dsi.io.FileLinesCollection}), {@linkplain it.unimi.dsi.io.InputBitStream bit streams}, classes providing large-size memory mapping such as {@link it.unimi.dsi.io.ByteBufferInputStream}, and {@link it.unimi.dsi.io.OfflineIterable}—the easy & fast way to store large sequences of objects on disk and iterate on them.
- The {@link it.unimi.dsi.util} package, containing pseudorandom number generators, {@linkplain it.unimi.dsi.util.ImmutableBinaryTrie tries}, {@linkplain it.unimi.dsi.util.ImmutableExternalPrefixMap immutable prefix maps}, {@linkplain it.unimi.dsi.util.BloomFilter Bloom filters}, a very comfortable {@link it.unimi.dsi.util.Properties} class and more.
- The {@link it.unimi.dsi.stat} package, containing a lightweight class for {@linkplain it.unimi.dsi.stat.SummaryStats computing basic statistics} and {@linkplain it.unimi.dsi.stat.Jackknife an arbitrary-precision implementation of the Jackknife method}.
- Lots of utility methods in {@link it.unimi.dsi.Util} (have a look!)
- Big versions of I/O and utility classes in {@link it.unimi.dsi.big.io} and {@link it.unimi.dsi.big.util}.
- The {@link it.unimi.dsi.parser.BulletParser}, that we use to parse HTML and XML.