public static final class ImmutableTable.Builder<R,C,V> extends Object
A builder for creating immutable table instances, especially public
static final
tables (“constant tables”). Example:
static final ImmutableTable<Integer, Character, String> SPREADSHEET =
new ImmutableTable.Builder<Integer, Character, String>()
.put(1, 'A', "foo")
.put(1, 'B', "bar")
.put(2, 'A', "baz")
.build();
By default, the order in which cells are added to the builder determines the iteration ordering of all views in the returned table, with putAll(com.diffplug.common.collect.Table<? extends R, ? extends C, ? extends V>)
following the Table.cellSet()
iteration order. However, if orderRowsBy(java.util.Comparator<? super R>)
or orderColumnsBy(java.util.Comparator<? super C>)
is called, the views are sorted by the supplied comparators.
For empty or single-cell immutable tables, ImmutableTable.of()
and ImmutableTable.of(Object, Object, Object)
are even more convenient.
Builder instances can be reused - it is safe to call build()
multiple times to build multiple tables in series. Each table is a superset of the tables created before it.
Constructor and Description |
---|
Builder()
Creates a new builder.
|
Builder(int initialCapacity)
Creates a new builder with the given initial capacity.
|
Modifier and Type | Method and Description |
---|---|
ImmutableTable<R,C,V> |
build()
Returns a newly-created immutable table.
|
ImmutableTable.Builder<R,C,V> |
orderColumnsBy(Comparator<? super C> columnComparator)
Specifies the ordering of the generated table’s columns.
|
ImmutableTable.Builder<R,C,V> |
orderRowsBy(Comparator<? super R> rowComparator)
Specifies the ordering of the generated table’s rows.
|
ImmutableTable.Builder<R,C,V> |
put(R rowKey,
C columnKey,
V value)
Associates the (
rowKey , columnKey ) pair with value in the built table. |
ImmutableTable.Builder<R,C,V> |
put(Table.Cell<? extends R,? extends C,? extends V> cell)
Adds the given
cell to the table, making it immutable if necessary. |
ImmutableTable.Builder<R,C,V> |
putAll(Table<? extends R,? extends C,? extends V> table)
Associates all of the given table’s keys and values in the built table.
|
public Builder()
Creates a new builder. The returned builder is equivalent to the builder generated by ImmutableTable.builder()
.
public Builder(int initialCapacity)
Creates a new builder with the given initial capacity. The returned builder is equivalent to the builder generated by ImmutableTable.builder(int)
.
public ImmutableTable.Builder<R,C,V> orderRowsBy(Comparator<? super R> rowComparator)
Specifies the ordering of the generated table’s rows.
public ImmutableTable.Builder<R,C,V> orderColumnsBy(Comparator<? super C> columnComparator)
Specifies the ordering of the generated table’s columns.
public ImmutableTable.Builder<R,C,V> put(R rowKey, C columnKey, V value)
Associates the (rowKey
, columnKey
) pair with value
in the built table. Duplicate key pairs are not allowed and will cause build()
to fail.
public ImmutableTable.Builder<R,C,V> put(Table.Cell<? extends R,? extends C,? extends V> cell)
Adds the given cell
to the table, making it immutable if necessary. Duplicate key pairs are not allowed and will cause build()
to fail.
public ImmutableTable.Builder<R,C,V> putAll(Table<? extends R,? extends C,? extends V> table)
Associates all of the given table’s keys and values in the built table. Duplicate row key column key pairs are not allowed, and will cause build()
to fail.
NullPointerException
- if any key or value in table
is nullpublic ImmutableTable<R,C,V> build()
Returns a newly-created immutable table.
IllegalArgumentException
- if duplicate key pairs were added