Class ImmutableMap.Builder<K,V>
- Direct Known Subclasses:
ImmutableBiMap.Builder
,ImmutableSortedMap.Builder
- Enclosing class:
- ImmutableMap<K,
V>
public static final
maps
("constant maps"). Example:
static final ImmutableMap<String, Integer> WORD_TO_INT =
new ImmutableMap.Builder<String, Integer>()
.put("one", 1)
.put("two", 2)
.put("three", 3)
.buildOrThrow();
For small immutable maps, the ImmutableMap.of()
methods are even more
convenient.
By default, a Builder
will generate maps that iterate over entries in the order they
were inserted into the builder, equivalently to LinkedHashMap
. 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 ImmutableSortedMap
to
sort by keys, or call 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 maps in series. Each map is a superset of the maps created before it.
- Since:
- 2.0
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean
(package private) int
(package private) Comparator<? super V>
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuild()
Returns a newly-created immutable map.(package private) ImmutableMap<K,
V> Returns a newly-created immutable map, or throws an exception if any key was added more than once.(package private) ImmutableMap.Builder<K,
V> combine
(ImmutableMap.Builder<K, V> other) private void
ensureCapacity
(int minCapacity) orderEntriesByValue
(Comparator<? super V> valueComparator) Configures thisBuilder
to order entries by value according to the specified comparator.Adds the givenentry
to the map, making it immutable if necessary.Associateskey
withvalue
in the built map.Adds all of the given entries to the built map.Associates all of the given map's keys and values in the built map.
-
Field Details
-
valueComparator
-
entries
-
size
int size -
entriesUsed
boolean entriesUsed
-
-
Constructor Details
-
Builder
public Builder()Creates a new builder. The returned builder is equivalent to the builder generated byImmutableMap.builder()
. -
Builder
Builder(int initialCapacity)
-
-
Method Details
-
ensureCapacity
private void ensureCapacity(int minCapacity) -
put
Associateskey
withvalue
in the built map. Duplicate keys are not allowed, and will causebuild()
to fail. -
put
Adds the givenentry
to the map, making it immutable if necessary. Duplicate keys are not allowed, and will causebuild()
to fail.- Since:
- 11.0
-
putAll
Associates all of the given map's keys and values in the built map. Duplicate keys are not allowed, and will causebuild()
to fail.- Throws:
NullPointerException
- if any key or value inmap
is null
-
putAll
public ImmutableMap.Builder<K,V> putAll(Iterable<? extends Map.Entry<? extends K, ? extends V>> entries) Adds all of the given entries to the built map. Duplicate keys are not allowed, and will causebuild()
to fail.- Throws:
NullPointerException
- if any key, value, or entry is null- Since:
- 19.0
-
orderEntriesByValue
Configures thisBuilder
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.
- Throws:
IllegalStateException
- if this method was already called- Since:
- 19.0
-
combine
-
build
Returns a newly-created immutable map. The iteration order of the returned map is the order in which entries were inserted into the builder, unlessorderEntriesByValue(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. Thebuild()
method will soon be deprecated.- Throws:
IllegalArgumentException
- if duplicate keys were added
-
buildOrThrow
Returns a newly-created immutable map, or throws an exception if any key was added more than once. The iteration order of the returned map is the order in which entries were inserted into the builder, unlessorderEntriesByValue(java.util.Comparator<? super V>)
was called, in which case entries are sorted by value.- Throws:
IllegalArgumentException
- if duplicate keys were added- Since:
- 31.0
-
buildJdkBacked
ImmutableMap<K,V> buildJdkBacked()
-