Class ImmutableBiMap.Builder<K,​V>

  • Enclosing class:
    ImmutableBiMap<K,​V>

    public static final class ImmutableBiMap.Builder<K,​V>
    extends ImmutableMap.Builder<K,​V>
    A builder for creating immutable bimap instances, especially public static final bimaps ("constant bimaps"). Example:

    For small immutable bimaps, the ImmutableBiMap.of() methods are even more convenient.

    By default, a Builder will generate bimaps that iterate over entries in the order they were inserted into the builder. For example, in the above example, WORD_TO_INT.entrySet() is guaranteed to iterate over the entries in the order "one"=1, "two"=2, "three"=3, and keySet() and values() respect the same order. If you want a different order, consider using orderEntriesByValue(Comparator), which changes this builder to sort entries by value.

    Builder instances can be reused - it is safe to call buildOrThrow() multiple times to build multiple bimaps in series. Each bimap is a superset of the bimaps created before it.

    Since:
    2.0
    • Method Detail

      • put

        @CanIgnoreReturnValue
        public ImmutableBiMap.Builder<K,​Vput​(java.util.Map.Entry<? extends K,​? extends V> entry)
        Adds the given entry to the bimap. Duplicate keys or values are not allowed, and will cause build() to fail.
        Overrides:
        put in class ImmutableMap.Builder<K,​V>
        Since:
        19.0
      • putAll

        @CanIgnoreReturnValue
        public ImmutableBiMap.Builder<K,​VputAll​(java.util.Map<? extends K,​? extends V> map)
        Associates all of the given map's keys and values in the built bimap. Duplicate keys or values are not allowed, and will cause build() to fail.
        Overrides:
        putAll in class ImmutableMap.Builder<K,​V>
        Throws:
        java.lang.NullPointerException - if any key or value in map is null
      • putAll

        @CanIgnoreReturnValue
        public ImmutableBiMap.Builder<K,​VputAll​(java.lang.Iterable<? extends java.util.Map.Entry<? extends K,​? extends V>> entries)
        Adds all of the given entries to the built bimap. Duplicate keys or values are not allowed, and will cause build() to fail.
        Overrides:
        putAll in class ImmutableMap.Builder<K,​V>
        Throws:
        java.lang.NullPointerException - if any key, value, or entry is null
        Since:
        19.0
      • orderEntriesByValue

        @CanIgnoreReturnValue
        public ImmutableBiMap.Builder<K,​VorderEntriesByValue​(java.util.Comparator<? super V> valueComparator)
        Configures this Builder to order entries by value according to the specified comparator.

        The sort order is stable, that is, if two entries have values that compare as equivalent, the entry that was inserted first will be first in the built map's iteration order.

        Overrides:
        orderEntriesByValue in class ImmutableMap.Builder<K,​V>
        Throws:
        java.lang.IllegalStateException - if this method was already called
        Since:
        19.0
      • build

        public ImmutableBiMap<K,​Vbuild()
        Returns a newly-created immutable bimap. The iteration order of the returned bimap is the order in which entries were inserted into the builder, unless orderEntriesByValue(java.util.Comparator<? super V>) was called, in which case entries are sorted by value.

        Prefer the equivalent method buildOrThrow() to make it explicit that the method will throw an exception if there are duplicate keys or values. The build() method will soon be deprecated.

        Overrides:
        build in class ImmutableMap.Builder<K,​V>
        Throws:
        java.lang.IllegalArgumentException - if duplicate keys or values were added