/* * Copyright (C) 2007 The Guava Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * This package contains generic collection interfaces and implementations, and * other utilities for working with collections. It is a part of the open-source * <a href="http://guava-libraries.googlecode.com">Guava libraries</a>. * * <h2>Collection Types</h2> * * <dl> * <dt>{@link com.google.common.collect.BiMap} * <dd>An extension of {@link java.util.Map} that guarantees the uniqueness of * its values as well as that of its keys. This is sometimes called an * "invertible map," since the restriction on values enables it to support * an {@linkplain com.google.common.collect.BiMap#inverse inverse view} -- * which is another instance of {@code BiMap}. * * <dt>{@link com.google.common.collect.Multiset} * <dd>An extension of {@link java.util.Collection} that may contain duplicate * values like a {@link java.util.List}, yet has order-independent equality * like a {@link java.util.Set}. One typical use for a multiset is to * represent a histogram. * * <dt>{@link com.google.common.collect.Multimap} * <dd>A new type, which is similar to {@link java.util.Map}, but may contain * multiple entries with the same key. Some behaviors of * {@link com.google.common.collect.Multimap} are left unspecified and are * provided only by the subtypes mentioned below. * * <dt>{@link com.google.common.collect.ListMultimap} * <dd>An extension of {@link com.google.common.collect.Multimap} which permits * duplicate entries, supports random access of values for a particular key, * and has <i>partially order-dependent equality</i> as defined by * {@link com.google.common.collect.ListMultimap#equals(Object)}. {@code * ListMultimap} takes its name from the fact that the {@linkplain * com.google.common.collect.ListMultimap#get collection of values} * associated with a given key fulfills the {@link java.util.List} contract. * * <dt>{@link com.google.common.collect.SetMultimap} * <dd>An extension of {@link com.google.common.collect.Multimap} which has * order-independent equality and does not allow duplicate entries; that is, * while a key may appear twice in a {@code SetMultimap}, each must map to a * different value. {@code SetMultimap} takes its name from the fact that * the {@linkplain com.google.common.collect.SetMultimap#get collection of * values} associated with a given key fulfills the {@link java.util.Set} * contract. * * <dt>{@link com.google.common.collect.SortedSetMultimap} * <dd>An extension of {@link com.google.common.collect.SetMultimap} for which * the {@linkplain com.google.common.collect.SortedSetMultimap#get * collection values} associated with a given key is a * {@link java.util.SortedSet}. * * <dt>{@link com.google.common.collect.Table} * <dd>A new type, which is similar to {@link java.util.Map}, but which indexes * its values by an ordered pair of keys, a row key and column key. * * <dt>{@link com.google.common.collect.ClassToInstanceMap} * <dd>An extension of {@link java.util.Map} that associates a raw type with an * instance of that type. * </dl> * * <h2>Collection Implementations</h2> * * <h3>of {@link java.util.List}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableList} * </ul> * * <h3>of {@link java.util.Set}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableSet} * <li>{@link com.google.common.collect.ImmutableSortedSet} * <li>{@link com.google.common.collect.ContiguousSet} (see {@code Range}) * </ul> * * <h3>of {@link java.util.Map}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableMap} * <li>{@link com.google.common.collect.ImmutableSortedMap} * <li>{@link com.google.common.collect.MapMaker} * </ul> * * <h3>of {@link com.google.common.collect.BiMap}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableBiMap} * <li>{@link com.google.common.collect.HashBiMap} * <li>{@link com.google.common.collect.EnumBiMap} * <li>{@link com.google.common.collect.EnumHashBiMap} * </ul> * * <h3>of {@link com.google.common.collect.Multiset}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableMultiset} * <li>{@link com.google.common.collect.HashMultiset} * <li>{@link com.google.common.collect.LinkedHashMultiset} * <li>{@link com.google.common.collect.TreeMultiset} * <li>{@link com.google.common.collect.EnumMultiset} * <li>{@link com.google.common.collect.ConcurrentHashMultiset} * </ul> * * <h3>of {@link com.google.common.collect.Multimap}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableMultimap} * <li>{@link com.google.common.collect.ImmutableListMultimap} * <li>{@link com.google.common.collect.ImmutableSetMultimap} * <li>{@link com.google.common.collect.ArrayListMultimap} * <li>{@link com.google.common.collect.HashMultimap} * <li>{@link com.google.common.collect.TreeMultimap} * <li>{@link com.google.common.collect.LinkedHashMultimap} * <li>{@link com.google.common.collect.LinkedListMultimap} * </ul> * * <h3>of {@link com.google.common.collect.Table}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableTable} * <li>{@link com.google.common.collect.ArrayTable} * <li>{@link com.google.common.collect.HashBasedTable} * <li>{@link com.google.common.collect.TreeBasedTable} * </ul> * * <h3>of {@link com.google.common.collect.ClassToInstanceMap}</h3> * <ul> * <li>{@link com.google.common.collect.ImmutableClassToInstanceMap} * <li>{@link com.google.common.collect.MutableClassToInstanceMap} * </ul> * * <h2>Classes of static utility methods</h2> * * <ul> * <li>{@link com.google.common.collect.Collections2} * <li>{@link com.google.common.collect.Iterators} * <li>{@link com.google.common.collect.Iterables} * <li>{@link com.google.common.collect.Lists} * <li>{@link com.google.common.collect.Maps} * <li>{@link com.google.common.collect.Queues} * <li>{@link com.google.common.collect.Sets} * <li>{@link com.google.common.collect.Multisets} * <li>{@link com.google.common.collect.Multimaps} * <li>{@link com.google.common.collect.Tables} * <li>{@link com.google.common.collect.ObjectArrays} * </ul> * * <h2>Comparison</h2> * * <ul> * <li>{@link com.google.common.collect.Ordering} * <li>{@link com.google.common.collect.ComparisonChain} * </ul> * * <h2>Abstract implementations</h2> * * <ul> * <li>{@link com.google.common.collect.AbstractIterator} * <li>{@link com.google.common.collect.AbstractSequentialIterator} * <li>{@link com.google.common.collect.ImmutableCollection} * <li>{@link com.google.common.collect.UnmodifiableIterator} * <li>{@link com.google.common.collect.UnmodifiableListIterator} * </ul> * * <h2>Ranges</h2> * * <ul> * <li>{@link com.google.common.collect.Range} * <li>{@link com.google.common.collect.RangeMap} * <li>{@link com.google.common.collect.DiscreteDomain} * <li>{@link com.google.common.collect.ContiguousSet} * </ul> * * <h2>Other</h2> * * <ul> * <li>{@link com.google.common.collect.Interner}, * {@link com.google.common.collect.Interners} * <li>{@link com.google.common.collect.Constraint}, * {@link com.google.common.collect.Constraints} * <li>{@link com.google.common.collect.MapConstraint}, * {@link com.google.common.collect.MapConstraints} * <li>{@link com.google.common.collect.MapDifference}, * {@link com.google.common.collect.SortedMapDifference} * <li>{@link com.google.common.collect.MinMaxPriorityQueue} * <li>{@link com.google.common.collect.PeekingIterator} * </ul> * * <h2>Forwarding collections</h2> * * <ul> * <li>{@link com.google.common.collect.ForwardingCollection} * <li>{@link com.google.common.collect.ForwardingConcurrentMap} * <li>{@link com.google.common.collect.ForwardingIterator} * <li>{@link com.google.common.collect.ForwardingList} * <li>{@link com.google.common.collect.ForwardingListIterator} * <li>{@link com.google.common.collect.ForwardingListMultimap} * <li>{@link com.google.common.collect.ForwardingMap} * <li>{@link com.google.common.collect.ForwardingMapEntry} * <li>{@link com.google.common.collect.ForwardingMultimap} * <li>{@link com.google.common.collect.ForwardingMultiset} * <li>{@link com.google.common.collect.ForwardingNavigableMap} * <li>{@link com.google.common.collect.ForwardingNavigableSet} * <li>{@link com.google.common.collect.ForwardingObject} * <li>{@link com.google.common.collect.ForwardingQueue} * <li>{@link com.google.common.collect.ForwardingSet} * <li>{@link com.google.common.collect.ForwardingSetMultimap} * <li>{@link com.google.common.collect.ForwardingSortedMap} * <li>{@link com.google.common.collect.ForwardingSortedMultiset} * <li>{@link com.google.common.collect.ForwardingSortedSet} * <li>{@link com.google.common.collect.ForwardingSortedSetMultimap} * <li>{@link com.google.common.collect.ForwardingTable} * </ul> */ @javax.annotation.ParametersAreNonnullByDefault package com.google.common.collect;