Skip to content.

Manageability

Sections
Personal tools
You are here: Home » blog » stuff » Open Source Java Collections API Extensions

Open Source Java Collections API Extensions

Okay, now its time for something a bit more rudimentary, that is data structures and algorithms. After all, it's important to remember that the appropriate data structure or algorithm is all that separates you from success and absolute failure. So to ensure that you've done due diligence, here's a collection of open source Java collections:

  1. Commons Collections - Commons-Collections seek to build upon the JDK classes by providing new interfaces, implementations and utilities.
  2. Javolution - Includes FastMap, a Map collection with real-time behavior. Unless the map's size exceeds its current capacity, no dynamic memory allocation is ever performed and response time is extremely fast and consistent (up to 5x faster than java.util.HashMap).
  3. Commons Primitives - Apache Jakarta Commons Primitives provides a collection of types and utilities optimized for working with Java primitives (boolean, byte, char, double, float, int, long, short). Generally, the Commons-Primitives classes are smaller, faster and easier to work with than their purely Object based alternatives.
  4. fastutil - fastutil extends the Java Collections Framework by providing type-specific maps, sets, lists and queues with a small memory footprint and fast access and insertion. fastutil came up as a necessity during the development of UbiCrawler, as we needed to manage structures with dozens of millions of items very efficient.
  5. Mango - Mango is a Java library consisting of a number of iterators, algorithms and functions, loosely inspired by the C++ Standard Template Library. Mango has four new iterators Array, Singleton, Bounded and Predicated.
  6. PCJ - Primitive Collections for Java (PCJ) is a set of collection classes for primitive data types in Java. The goal is to provide an efficient alternative to the Java Collections Framework (JCF) when using primitive data types, such as int, boolean, or double. Some of its main features are: Interface hierarchy for all primitive types and High Performance. Benchmarks show good performance results for PCJ collections.
  7. GNU Trove - Fast, lightweight implementations of the java.util Collections API. These implementations are designed to be pluggable replacements for their JDK equivalents. Whenever possible, provide the same collections support for primitive types. This gap in the JDK is often addressed by using the "wrapper" classes (java.lang.Integer, java.lang.Float, etc.) with Object-based collections. For most applications, however, collections which store primitives directly will require less space and yield significant performance gains.
  8. MultiTreeMap - A TreeMap that allows duplicate keys to be entered. Supports the java.util.Collections interface and an enhanced Iterator. Implemented by using a Red-Black Tree.
  9. Type Specific Collections Library - Type-Specific Collections Library. Timing measurements listed show a better than 20 percent increase in performance using the classes from this library in a test with Integer objects and generic collections. For primitive int values in a type-specific collection the performance increase is much greater, to almost 4 times that for the Integers in a standard IntArray.
  10. innig utilities - Includes several generalizations / augmentations of the Java Collections API. Finds the difference between two Collections. A multi-map implementation which combines existing Map and Set implementations.
  11. Joda-Primitives - Each collection implementation stores the data as a primitive object. The interfaces provide dedicated methods to access those primitives. If you need a list of numbers or booleans, then these classes are ideal. A primitive collection uses less memory, performs more quickly and saves on garbage collection. All this is due to the fact that no Object wrapper class has to be created. Joda Primitives defines interfaces that extend the JDK collection interfaces. This project offers deeper direct integration, however this results in certain method names being different from JDK collections.
  12. Tea Trove - Includes a thread-safe Set that manages flyweights: sharable objects that are usually immutable, a set implementation that is backed by any map, A map that implements a write-through cache to another map and many others.
  13. The Colt Distribution - This distribution consists of several free Java libraries, for user convenience bundled under one single uniform umbrella. The Colt library provides fundamental general-purpose data structures optimized for numerical data, such as resizable arrays, dense and sparse matrices (multi-dimensional arrays), linear algebra, associative containers and buffer management. The JAL library, a partial port of the C++ Standard Template Library developed by Silicon Graphics, contains a wide range of efficiently coded general-purpose algorithms on arrays
  14. SecureCollection - SecureCollection is a Java class library tailored for big projects. SecureCollection provides a thin wrapper around the standard collection API to protect your app code from bugs and missing functionality. It features unit tests for all classes.
  15. JGA - Generic Algorithms for Java. The goal of this project is to provide functionality roughly analogous to the portions of the C++ STL library that are not already provided by java. Primary functionality includes a set of functors and predicates and basic utility algorithms for use with java collections.
  16. Util Project - This package contains Java utility classes designed to help you write Java programs. The classes cover diverse programming areas, including: specialized collections, networking, stream-based I/O, class and resource loading, JAR files and resources, concurrent processing, distributed processing, security, XML parsing, handling configuration files, Swing GUI, and memory management. This package is an open-source research project of Distributed Computing Laboratory, Dept. of Math and Computer Science, Emory University.
  17. JaXLib - JaxLib provides efficient in-memory datastructures for objects and primitive types, I/O streams and related utilities. Tools for every day tasks like file system access, event handling and string manipulation. JaXLib classes and interfaces are inherited from those of the Java SDK. JaXLib requires Java 5.0 Generic types.
  18. Google Collections - The Google Collections Library is a suite of new collections and collection-related goodness for Java 5.0, brought to you by Google. The major new types are: BiMap, a Map that guarantees unique values, and supports an inverse view; Multiset, a collection that may contain duplicate values like a List; Multimap, similar to Map, but may contain duplicate keys.
  19. ZedLib - The aim of this project is to build a theoretically sound collections library based on Mike Spivey's work on the Z notation. Function extends Relation extends Set. Many set operations supported including range and domain restriction, anti-restriction, relational composition and override, and more.
  20. Hamcrest Collections - A library using Hamcrest a library of matcher objects (i.e. constraints or predicates) allowing 'match' rules to be defined declaratively) to implement features such as select, reject, map, reduce and zip familiar from languages like Ruby and Python.
  21. Highly Scalable Java - A collection of Concurrent and Highly Scalable Utilities. These are intended as direct replacements for the java.util.* or java.util.concurrent.* collections but with better performance when many CPUs are using the collection concurrently.
  22. Incofmancer's Collections - A new collections library all implemented on top a "yield return" like feature (i.e. Yielder) in Java.
  23. JoSQL - JoSQL (SQL for Java Objects) provides the ability to apply a SQL statement to a collection of Java Objects. JoSQL provides the ability to search, order and group any Java objects and should be applied when you want to perform SQL-like queries on a collection.
  24. Jaggregate - Jaggregate is a collections library that is modeled after the ANSI Smalltalk collection protocols.
  25. Generic Algorithms for Java - JGA is a functors library: the intent is to explore and exploit functors as a design and implementation tool to reduce boilerplate coding. JGA borrows the functors from C++ STL library.
  26. JBEL - JBEL (Java Boolean Expression Library) is a small, efficient Java library enabling programmers to create simple, easily understandable expressions to perform collection filtering and/or sorting.
  27. Quaere - Quaere is a very flexible DSL that lets you perform a wide range of queries against any data structure that is an array, or implements the java.lang.Iterable. The DSL is based on static imports and fluent interfaces. It you integrate the query language with regular Java code without the need for preprocessing or code generation. Quaere includes a large number of querying operators including restriction, selection, projection, set, partitioning, grouping, ordering, quantification, aggregation and conversion operators. It also supports lambda expressions.

Let me know if I forgot something.

Created by admin
Last modified 2007-10-25 04:55 AM

Commons Collections Reloaded

Posted by Anonymous User at 2005-11-22 01:14 AM

There is a fork of the Commons Collections project that makes use of Java 5 generics.

visitors
reading
 
 

Powered by Plone

This site conforms to the following standards: