The Google Collections Library 0.8 (ALPHA) is a suite of new collections and collection-related goodness for Java 5.0, brought to you by Google.
Update (2008/08/20): See Releases for information about the latest Google Collections release.
This library is a natural extension of the Java Collections Framework you already know and love.
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, yet has order-independent equality like a Set. Often used to represent a histogram.
- Multimap. Similar to Map, but may contain duplicate keys. Has subtypes SetMultimap and ListMultimap providing more specific behavior.
There are also more than a dozen collection implementations, mostly of the interfaces above, but not all. ReferenceMap, for example, is a ConcurrentMap implementation which easily handles any combination of strong, soft or weak keys with strong, soft or weak values.
Static utility classes include:
- Comparators. Natural order, compound, null-friendly, ad-hoc . . .
- Iterators and Iterables. Element-based equality, cycle, concat, partition, filter with predicate, transform with function ...
- Lists, Sets and Maps. A plethora of convenient factory methods and much more.
- PrimitiveArrays: "boxing"/"unboxing" of primitive arrays
And there's more:
- Immutable collections
- Forwarding collections
- Constrained collections
- Implementation helpers like AbstractIterator
To understand everything offered by this library, you'll have to explore the API using the "API documentation" link at the right. Or download a recent snapshot, including the binary, source, and docs, from the "Featured Downloads" section. Further information can be found using "Wiki" tab above.
We hope you find this library half as useful as we have ourselves!
General interest background reading: JavaLobby interview with Kevin and Jared.
