@Override public Map<R, V> row(C rowKey) { return original.column(rowKey); }
@Override public Map<R, V2> column(C columnKey) { return Maps.transformValues(fromTable.column(columnKey), function); }
@Override public Map<R, V> column(C columnKey) { return delegate().column(columnKey); }
@Override public Map<R, V> column(C columnKey) { assertTrue(Thread.holdsLock(mutex)); return delegate.column(columnKey); }
@Override public Map<R, V> column(@Nullable C columnKey) { synchronized (mutex) { return map(delegate().column(columnKey), mutex); } }
@Override protected Set<String> create(String[] elements) { Iterable<String> rowKeys = ImmutableSet.copyOf(elements); Iterable<Integer> columnKeys = ImmutableList.of(1, 2, 3); Table<String, Integer, Character> table = ArrayTable.create(rowKeys, columnKeys); populateForRowKeySet(table, elements); return table.column(1).keySet(); } })
@Override protected Set<String> create(String[] elements) { Table<String, Integer, Character> table = TreeBasedTable.create(); populateForRowKeySet(table, elements); return table.column(1).keySet(); }
@Override protected Set<String> create(String[] elements) { Table<String, Integer, Character> table = HashBasedTable.create(); populateForRowKeySet(table, elements); return table.column(1).keySet(); } })
@Override protected Map<String, Integer> makePopulatedMap() { Table<String, Character, Integer> table = makeTable(); table.put("one", 'a', 1); table.put("two", 'a', 2); table.put("three", 'a', 3); table.put("four", 'b', 4); return table.column('a'); } }
@Override protected Map<String, Integer> makeEmptyMap() { return makeTable().column('a'); }
@Override protected Map<String, Integer> makePopulatedMap() { Table<String, Character, Integer> table = HashBasedTable.create(); table.put("one", 'a', 1); table.put("two", 'a', 2); table.put("three", 'a', 3); table.put("four", 'b', 4); return Tables.transformValues(table, DIVIDE_BY_2).column('a'); } }
@Override public void testColumn() { table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c'); Map<String, Character> expected = Maps.newHashMap(); expected.put("foo", 'a'); expected.put("bar", 'b'); expected.put("cat", null); assertEquals(expected, table.column(1)); }
@Override protected Map<String, Integer> makePopulatedMap() { Table<String, Character, Integer> table = HashBasedTable.create(); table.put("one", 'a', 1); table.put("two", 'a', 2); table.put("three", 'a', 3); table.put("four", 'b', 4); return Tables.unmodifiableTable(table).column('a'); } }
@Override protected Set<String> create(String[] elements) { Table<String, Integer, Character> table = HashBasedTable.create(); populateForRowKeySet(table, elements); return Tables.unmodifiableTable(table).column(1).keySet(); } })
public void testColumn() { table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c'); assertEquals(ImmutableMap.of("foo", 'a', "bar", 'b'), table.column(1)); }
public void testColumnMissing() { table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c'); Map<String, Character> column = table.column(4); assertTrue(column.isEmpty()); try { column.put("foo", 'd'); fail(); } catch (UnsupportedOperationException expected) { } }
public void testColumnNull() { table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c'); try { table.column(null); fail(); } catch (NullPointerException expected) { } }
@Override protected Set<String> create(String[] elements) { Table<String, Integer, Character> table = HashBasedTable.create(); populateForRowKeySet(table, elements); return Tables.transformValues(table, Functions.toStringFunction()) .column(1) .keySet(); } })
public void testColumnPutIllegal() { table = create("foo", 1, 'a', "bar", 1, 'b', "foo", 3, 'c'); Map<String, Character> map = table.column(3); try { map.put("dog", 'd'); fail(); } catch (IllegalArgumentException expected) { assertThat(expected).hasMessageThat().isEqualTo("Row dog not in [foo, bar, cat]"); } }
public void testBuilder_orderRowsBy_dense() { ImmutableTable.Builder<Character, Integer, String> builder = ImmutableTable.builder(); builder.orderRowsBy(Ordering.natural()); builder.put('c', 3, "foo"); builder.put('c', 2, "bar"); builder.put('c', 1, "baz"); builder.put('b', 3, "cat"); builder.put('b', 1, "dog"); builder.put('a', 3, "foo"); builder.put('a', 2, "bar"); builder.put('a', 1, "baz"); Table<Character, Integer, String> table = builder.build(); assertThat(table.rowKeySet()).containsExactly('a', 'b', 'c').inOrder(); assertThat(table.column(1).keySet()).containsExactly('a', 'b', 'c').inOrder(); }