11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/*
21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2007 The Guava Authors
31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License.
61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at
71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0
91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and
141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License.
151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert
171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/**
181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * This package contains generic collection interfaces and implementations, and
191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * other utilities for working with collections. It is a part of the open-source
201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <a href="http://guava-libraries.googlecode.com">Guava libraries</a>.
211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Collection Types</h2>
231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dl>
251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.BiMap}
261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link java.util.Map} that guarantees the uniqueness of
271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     its values as well as that of its keys. This is sometimes called an
281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     "invertible map," since the restriction on values enables it to support
291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     an {@linkplain com.google.common.collect.BiMap#inverse inverse view} --
301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     which is another instance of {@code BiMap}.
311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.Multiset}
331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link java.util.Collection} that may contain duplicate
341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     values like a {@link java.util.List}, yet has order-independent equality
351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     like a {@link java.util.Set}.  One typical use for a multiset is to
361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     represent a histogram.
371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.Multimap}
391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>A new type, which is similar to {@link java.util.Map}, but may contain
401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     multiple entries with the same key. Some behaviors of
411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.Multimap} are left unspecified and are
421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     provided only by the subtypes mentioned below.
431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.ListMultimap}
451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link com.google.common.collect.Multimap} which permits
461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     duplicate entries, supports random access of values for a particular key,
471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     and has <i>partially order-dependent equality</i> as defined by
481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.ListMultimap#equals(Object)}. {@code
491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     ListMultimap} takes its name from the fact that the {@linkplain
501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     com.google.common.collect.ListMultimap#get collection of values}
511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     associated with a given key fulfills the {@link java.util.List} contract.
521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.SetMultimap}
541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link com.google.common.collect.Multimap} which has
551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     order-independent equality and does not allow duplicate entries; that is,
561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     while a key may appear twice in a {@code SetMultimap}, each must map to a
571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     different value.  {@code SetMultimap} takes its name from the fact that
581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     the {@linkplain com.google.common.collect.SetMultimap#get collection of
591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     values} associated with a given key fulfills the {@link java.util.Set}
601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     contract.
611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.SortedSetMultimap}
631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link com.google.common.collect.SetMultimap} for which
641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     the {@linkplain com.google.common.collect.SortedSetMultimap#get
651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     collection values} associated with a given key is a
661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link java.util.SortedSet}.
671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.Table}
691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>A new type, which is similar to {@link java.util.Map}, but which indexes
701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     its values by an ordered pair of keys, a row key and column key.
711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dt>{@link com.google.common.collect.ClassToInstanceMap}
731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <dd>An extension of {@link java.util.Map} that associates a raw type with an
741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     instance of that type.
751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </dl>
761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Collection Implementations</h2>
781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link java.util.List}</h3>
801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableList}
821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link java.util.Set}</h3>
851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableSet}
871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableSortedSet}
887dd252788645e940eada959bdde927426e2531c9Paul Duffin * <li>{@link com.google.common.collect.ContiguousSet} (see {@code Range})
891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link java.util.Map}</h3>
921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableMap}
941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableSortedMap}
951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.MapMaker}
961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link com.google.common.collect.BiMap}</h3>
991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableBiMap}
1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.HashBiMap}
1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.EnumBiMap}
1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.EnumHashBiMap}
1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link com.google.common.collect.Multiset}</h3>
1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableMultiset}
1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.HashMultiset}
1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.LinkedHashMultiset}
1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.TreeMultiset}
1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.EnumMultiset}
1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ConcurrentHashMultiset}
1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link com.google.common.collect.Multimap}</h3>
1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableMultimap}
1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableListMultimap}
1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableSetMultimap}
1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ArrayListMultimap}
1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.HashMultimap}
1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.TreeMultimap}
1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.LinkedHashMultimap}
1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.LinkedListMultimap}
1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link com.google.common.collect.Table}</h3>
1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableTable}
1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ArrayTable}
1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.HashBasedTable}
1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.TreeBasedTable}
1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h3>of {@link com.google.common.collect.ClassToInstanceMap}</h3>
1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableClassToInstanceMap}
1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.MutableClassToInstanceMap}
1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Classes of static utility methods</h2>
1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Collections2}
1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Iterators}
1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Iterables}
1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Lists}
1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Maps}
1507dd252788645e940eada959bdde927426e2531c9Paul Duffin * <li>{@link com.google.common.collect.Queues}
1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Sets}
1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Multisets}
1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Multimaps}
1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Tables}
1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ObjectArrays}
1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Comparison</h2>
1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Ordering}
1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ComparisonChain}
1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Abstract implementations</h2>
1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.AbstractIterator}
1697dd252788645e940eada959bdde927426e2531c9Paul Duffin * <li>{@link com.google.common.collect.AbstractSequentialIterator}
1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ImmutableCollection}
1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.UnmodifiableIterator}
1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.UnmodifiableListIterator}
1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Ranges</h2>
1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Range}
1790888a09821a98ac0680fad765217302858e70fa4Paul Duffin * <li>{@link com.google.common.collect.RangeMap}
1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.DiscreteDomain}
1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ContiguousSet}
1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Other</h2>
1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Interner},
1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.Interners}
1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.Constraint},
1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.Constraints}
1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.MapConstraint},
1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.MapConstraints}
1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.MapDifference},
1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *     {@link com.google.common.collect.SortedMapDifference}
1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.MinMaxPriorityQueue}
1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.PeekingIterator}
1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <h2>Forwarding collections</h2>
2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert *
2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul>
2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingCollection}
2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingConcurrentMap}
2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingIterator}
2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingList}
2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingListIterator}
2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingListMultimap}
2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingMap}
2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingMapEntry}
2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingMultimap}
2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingMultiset}
2127dd252788645e940eada959bdde927426e2531c9Paul Duffin * <li>{@link com.google.common.collect.ForwardingNavigableMap}
2137dd252788645e940eada959bdde927426e2531c9Paul Duffin * <li>{@link com.google.common.collect.ForwardingNavigableSet}
2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingObject}
2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingQueue}
2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingSet}
2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingSetMultimap}
2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingSortedMap}
2190888a09821a98ac0680fad765217302858e70fa4Paul Duffin * <li>{@link com.google.common.collect.ForwardingSortedMultiset}
2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingSortedSet}
2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingSortedSetMultimap}
2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link com.google.common.collect.ForwardingTable}
2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul>
2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */
2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@javax.annotation.ParametersAreNonnullByDefault
2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.collect;
227