Guava - Table Interface

Table represents a special map where two keys can be specified in combined fashion to refer to a single value. It is similar to creating a map of maps.
Following is the declaration for com.google.common.collect.Table<R,C,V> interface −
@GwtCompatible
public interface Table<R,C,V>
Set<Table.Cell<R,C,V>> cellSet()
Returns a set of all row key/column key/value triplets.
void clear()
Removes all mappings from the table.
Map<R,V>	column(C columnKey)
Returns a view of all mappings that have the given column key.
Set<C> columnKeySet()
Returns a set of column keys that have one or more values in the table.
Map<C,Map<R,V>> columnMap()
Returns a view that associates each column key with the corresponding map from row keys to values.
boolean contains(Object rowKey, Object columnKey)
Returns true if the table contains a mapping with the specified row and column keys.
boolean containsColumn(Object columnKey)
Returns true if the table contains a mapping with the specified column.
boolean containsRow(Object rowKey)
Returns true if the table contains a mapping with the specified row key.
boolean containsValue(Object value)
Returns true if the table contains a mapping with the specified value.
boolean equals(Object obj)
Compares the specified object with this table for equality.
V get(Object rowKey, Object columnKey)
Returns the value corresponding to the given row and column keys, or null if no such mapping exists.
int hashCode()
Returns the hash code for this table.
boolean isEmpty()
Returns true if the table contains no mappings.
V put(R rowKey, C columnKey, V value)
Associates the specified value with the specified keys.
void putAll(Table<? extends R,? extends C,? extends V> table)
Copies all mappings from the specified table to this table.
V remove(Object rowKey, Object columnKey)
Removes the mapping, if any, associated with the given keys.
Map<C,V>	row(R rowKey)
Returns a view of all mappings that have the given row key.
Set<R> rowKeySet()
Returns a set of row keys that have one or more values in the table.
Map<R,Map<C,V>> rowMap()
Returns a view that associates each row key with the corresponding map from column keys to values.
int size()
Returns the number of row key / column key / value mappings in the table.
Collection<V> values()
Returns a collection of all values, which may contain duplicates.
Create the following java program using any editor of your choice in say C:/> Guava.
import java.util.Map;
import java.util.Set;

import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

public class GuavaTester {
   public static void main(String args[]) {
   
      //Table<R,C,V> == Map<R,Map<C,V>>
      /*
      *  Company: IBM, Microsoft, TCS
      *  IBM 		-> {101:Mahesh, 102:Ramesh, 103:Suresh}
      *  Microsoft 	-> {101:Sohan, 102:Mohan, 103:Rohan } 
      *  TCS 		-> {101:Ram, 102: Shyam, 103: Sunil } 
      * 
      * */
      
      //create a table
      Table<String, String, String> employeeTable = HashBasedTable.create();

      //initialize the table with employee details
      employeeTable.put("IBM", "101","Mahesh");
      employeeTable.put("IBM", "102","Ramesh");
      employeeTable.put("IBM", "103","Suresh");

      employeeTable.put("Microsoft", "111","Sohan");
      employeeTable.put("Microsoft", "112","Mohan");
      employeeTable.put("Microsoft", "113","Rohan");

      employeeTable.put("TCS", "121","Ram");
      employeeTable.put("TCS", "122","Shyam");
      employeeTable.put("TCS", "123","Sunil");

      //get Map corresponding to IBM
      Map<String,String> ibmEmployees =  employeeTable.row("IBM");

      System.out.println("List of IBM Employees");
      
      for(Map.Entry<String, String> entry : ibmEmployees.entrySet()) {
         System.out.println("Emp Id: " + entry.getKey() + ", Name: " + entry.getValue());
      }

      //get all the unique keys of the table
      Set<String> employers = employeeTable.rowKeySet();
      System.out.print("Employers: ");
      
      for(String employer: employers) {
         System.out.print(employer + " ");
      }
      
      System.out.println();

      //get a Map corresponding to 102
      Map<String,String> EmployerMap =  employeeTable.column("102");
      
      for(Map.Entry<String, String> entry : EmployerMap.entrySet()) {
         System.out.println("Employer: " + entry.getKey() + ", Name: " + entry.getValue());
      }		
   }	
}
Compile the class using javac compiler as follows −
C:\Guava>javac GuavaTester.java

Now run the GuavaTester to see the result.
C:\Guava>java GuavaTester

See the result.
List of IBM Employees
Emp Id: 102, Name: Ramesh
Emp Id: 101, Name: Mahesh
Emp Id: 103, Name: Suresh
Employers: IBM TCS Microsoft 
Employer: IBM, Name: Ramesh

 Print
 Add Notes
 Bookmark this page