Java Guava Table接口

Guava Table接口

Table表示一个特殊的Map,其中可以以组合方式指定两个key来引用单个值。它类似于创建Map的Map。

使用添加依赖

<dependency>
   <groupId>com.google.guava</groupId>
   <artifactId>guava</artifactId>
   <version>20.0</version>
</dependency>

Guava Table接口的方法

方法

描述
Set<Table.Cell<R,C,V>> cellSet()返回一组所有行键/列键/值三元组。
void clear()从表中删除所有映射。
Map<R,V> column(C columnKey)返回具有给定列键的所有映射的视图。
Set<C> columnKeySet()返回一组在表中具有一个或多个值的列键。
Map<C,Map<R,V>> columnMap()返回一个视图,该视图将每个列键与从行键到值的对应映射相关联。
boolean contains(Object rowKey, Object columnKey)如果表包含具有指定行和列键的映射,则返回 true。
boolean containsColumn(Object columnKey)如果表包含具有指定列的映射,则返回 true。
boolean containsRow(Object rowKey)如果表包含具有指定行键的映射,则返回 true。
boolean containsValue(Object value)如果表包含具有指定值的映射,则返回 true。
boolean equals(Object obj)将指定对象与此表进行比较是否相等。
V get(Object rowKey, Object columnKey)返回与给定行和列键对应的值,如果不存在此类映射,则返回 null。
int hashCode()返回此表的哈希码。
boolean isEmpty()如果表不包含映射,则返回 true。
V put(R rowKey, C columnKey, V value)将指定的值与指定的键相关联。
void putAll(Table<? extends R,? extends C,? extends V> table)将指定表中的所有映射复制到此表。
V remove(Object rowKey, Object columnKey)删除与给定键关联的映射(如果有)。
Map<C,V> row(R rowKey)返回具有给定行键的所有映射的Map。
Set<R> rowKeySet()返回一组在表中具有一个或多个值的行键。
Map<R,Map<C,V>> rowMap()返回一个Map,该视图将每个行键与从列键到值的对应映射相关联。
int size()返回表中行键/列键/值映射的数量。
Collection<V> values()返回所有值的集合,其中可能包含重复项。

Guava Table接口示例

import org.junit.Test;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.Table;

import java.util.*;

/**
 * @Author: zmy
 * @CreateDate: 2022/8/24
 * @CreateTime: 10:20
 * @Description:
 */
public class CuavaTableTest {
    @Test
    public void test1(){
        Table<String, String, String> table = HashBasedTable.create();
        table.put("ALBB", "101","A101");
        table.put("ALBB", "102","A102");
        table.put("ALBB", "103","A103");

        table.put("Microsoft", "111","M111");
        table.put("Microsoft", "112","M112");
        table.put("Microsoft", "113","M113");

        table.put("TCL", "121","T121");
        table.put("TCL", "122","T122");
        table.put("TCL", "123","T123");

        Map<String, String> ibm = table.row("ALBB");
        System.out.println("获取 ALBB 映射的Map集合");
        for(Map.Entry<String, String> entry : ibm.entrySet()) {
            System.out.println("Emp Id: " + entry.getKey() + ", Name: " + entry.getValue());
        }
        Set<String> uniqueKey = table.rowKeySet();
        System.out.println("获取唯一主键");
        System.out.println("uniqueKey = " + uniqueKey);

        // 转为嵌套的Map
        System.out.println("将Table转换为嵌套Map的结构");
        Map<String, Map<String, String>> stringMapMap = table.rowMap();
        System.out.println("stringMapMap = " + stringMapMap);

        // 获取值
        System.out.println("获取Table中所有的值(value)");
        List<String> values = new ArrayList<>(table.values());
        System.out.println("values = " + values);

    }
}

结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值