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