Guava – Table Interface

  • Post author:
  • Post category:Guava
  • Post comments:1 Comment
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.

Interface Declaration

Following is the declaration for com.google.common.collect.Table<R,C,V> interface −

@GwtCompatible
public interface Table<R,C,V>

Interface Methods

Sr.NoMethod & Description
1Set<Table.Cell<R,C,V>> cellSet()Returns a set of all row key/column key/value triplets.
2void clear()Removes all mappings from the table.
3Map<R,V> column(C columnKey)Returns a view of all mappings that have the given column key.
4Set<C> columnKeySet()Returns a set of column keys that have one or more values in the table.
5Map<C,Map<R,V>> columnMap()Returns a view that associates each column key with the corresponding map from row keys to values.
6boolean contains(Object rowKey, Object columnKey)Returns true if the table contains a mapping with the specified row and column keys.
7boolean containsColumn(Object columnKey)Returns true if the table contains a mapping with the specified column.
8boolean containsRow(Object rowKey)Returns true if the table contains a mapping with the specified row key.
9boolean containsValue(Object value)Returns true if the table contains a mapping with the specified value.
10boolean equals(Object obj)Compares the specified object with this table for equality.
11V get(Object rowKey, Object columnKey)Returns the value corresponding to the given row and column keys, or null if no such mapping exists.
12int hashCode()Returns the hash code for this table.
13boolean isEmpty()Returns true if the table contains no mappings.
14V put(R rowKey, C columnKey, V value)Associates the specified value with the specified keys.
15void putAll(Table<? extends R,? extends C,? extends V> table)Copies all mappings from the specified table to this table.
16V remove(Object rowKey, Object columnKey)Removes the mapping, if any, associated with the given keys.
17Map<C,V> row(R rowKey)Returns a view of all mappings that have the given row key.
18Set<R> rowKeySet()Returns a set of row keys that have one or more values in the table.
19Map<R,Map<C,V>> rowMap()Returns a view that associates each row key with the corresponding map from column keys to values.
20int size()Returns the number of row key / column key / value mappings in the table.
21Collection<V> values()Returns a collection of all values, which may contain duplicates.

Example of Table Interface

Create the following java program using any editor of your choice in say C:/> Guava.

GuavaTester.java

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());
      }		
   }	
}

Verify the Result

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

This Post Has One Comment

Leave a Reply