A Multimap<K,V> whose contents will never change, with many other important properties detailed at ImmutableCollection<E>. Warning: avoid direct usage of ImmutableMultimap<K,V> as a type (as with Multimap<K,V> itself). Prefer subtypes such as ImmutableSetMultimap<K,V> or ImmutableListMultimap<K,V>, which have well-defined #equals semantics, thus avoiding a common source of bugs and confusion. Note: every ImmutableMultimap<K,V> offers an #inverse view, so there is no need for a distinct ImmutableBiMultimap type. Key-grouped iteration. All view collections follow the same iteration order. In all current implementations, the iteration order always keeps multiple entries with the same key together. Any creation method that would customarily respect insertion order (such as <K,V>copyOf(Multimap<? extends K,? extends V> multimap)) instead preserves key-grouped order by inserting entries for an existing key immediately after the last entry having that key. See the Guava User Guide article on immutable collections.
A mapping from disjoint nonempty ranges to non-null values. Queries look up the value associated with the range (if any) that contains a specified key. In contrast to RangeSet<C>, no "coalescing" is done of isConnected(Range<C> other) ranges, even if they are mapped to the same value.
The hash code equals the value Arrays.asList(leftValue(), rightValue()).hashCode().
An implementation of RangeMap based on a TreeMap, supporting all optional operations. Like all RangeMap implementations, this supports neither null keys nor null values.
Returns an unmodifiable view of the specified navigable map. Query operations on the returned map read through to the specified map, and attempts to modify the returned map, whether direct or via its views, result in an UnsupportedOperationException. The returned navigable map will be serializable if the specified navigable map is serializable. This method's signature will not permit you to convert a NavigableMap to a NavigableMap. If it permitted this, the returned map's comparator() method might return a Comparator, which works only on a particular subtype of K, but promise that it's a Comparator, which must work on any type of K.