Table<R, C, V>
is a useful alternative to nested maps of the form Map<R, Map<C, V>>
. For example, if you want to store a collection of Person
objects keyed on both firstName
and lastName
, instead of using something like a Map<FirstName, Map<LastName, Person>>
, it is easier to use a Table<FirstName, LastName, Person>
.
Here is an example:
final Table<String, String, Person> table = HashBasedTable.create(); table.put("Alice", "Smith", new Person("Alice", "Smith")); table.put("Bob", "Smith", new Person("Bob", "Smith")); table.put("Charlie", "Jones", new Person("Charlie", "Jones")); table.put("Bob", "Jones", new Person("Bob", "Jones")); // get all persons with a surname of Smith final Collection<Person> smiths = table.column("Smith").values(); // get all persons with a firstName of Bob final Collection<Person> bobs = table.row("Bob").values(); // get a specific person final Person alice = table.get("Alice", "Smith");
thanks for your input
ReplyDeleteAn awesomely simple example. Thank you !
ReplyDelete