📜  表 |番石榴 |Java

📅  最后修改于: 2022-05-13 01:54:24.977000             🧑  作者: Mango

表 |番石榴 |Java

Guava's Table 是一个集合,它表示一个包含行、列和相关单元格值的表状结构。行和列充当有序的键对。

行和列充当有序的键对。如果我们必须以传统方式进行管理,那么结构将是一个行映射,其中每行包含一个列映射和单元格值,例如Map< rowKey, Map< colKey, cellValue >>

声明:以下是com.google.common.collect.Table< R, C, V >接口的声明:

@GwtCompatible
public interface Table

参数 :

  • R :表格行键的类型。
  • C :表列键的类型。
  • V :映射值的类型。

表接口提供的一些方法是:

Guava 为 Table 接口提供了多种不同的实现方式,如下表所示:

要点:

  • 一个表可能是稀疏的,只有一小部分行键/列键对拥有相应的值。
  • 在一些实现中,按列键的数据访问可能比按行键的数据访问具有更少的支持操作或更差的性能。
  • 所有修改表的方法都是可选的,表返回的视图可能是可修改的,也可能是不可修改的。当不支持修改时,这些方法将抛出UnsupportedOperationException。

下面给出了 Table Interface 提供的一些其他方法:

例子 :

// Java code to show implementation of
// Guava's Table interface
import java.util.Map;
import java.util.Set;
  
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;
  
class GFG {
  
    // Driver method
    public static void main(String args[])
    {
  
        // creating a table to store Student information
        Table studentTable = HashBasedTable.create();
  
        // Adding student details in the table
        // The first field represents the department
        // of student, second field represents the
        // Roll no. and third field represents the
        // student name
        studentTable.put("CSE", "5", "Dhiman");
        studentTable.put("CSE", "7", "Shubham");
        studentTable.put("CSE", "9", "Abhishek");
        studentTable.put("CSE", "12", "Sahil");
  
        studentTable.put("ECE", "15", "Ram");
        studentTable.put("ECE", "18", "Anmol");
        studentTable.put("ECE", "20", "Akhil");
        studentTable.put("ECE", "25", "Amrit");
  
        // get Map corresponding to ECE department
        Map eceMap = studentTable.row("ECE");
  
        System.out.println("List of ECE students : ");
  
        for (Map.Entry student : eceMap.entrySet()) {
            System.out.println("Student Roll No : " + student.getKey() + ", Student Name : " + student.getValue());
        }
  
        System.out.println();
  
        // get a Map corresponding to Roll no. 12
        Map stuMap = studentTable.column("12");
  
        for (Map.Entry student : stuMap.entrySet()) {
            System.out.println("Student Roll No : " + student.getKey() + ", Student Name : " + student.getValue());
        }
    }
}

输出 :

List of ECE students : 
Student Roll No : 15, Student Name : Ram
Student Roll No : 18, Student Name : Anmol
Student Roll No : 20, Student Name : Akhil
Student Roll No : 25, Student Name : Amrit

Student Roll No : CSE, Student Name : Sahil

参考:谷歌番石榴