Table和HashBasedTable的使用案例


1.普通使用

复制代码
package org.example.testhashbasedtable;

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

import java.util.Map;

public class TestHashBasedTable {
    public static void main(String[] args) {
        Table<String, Integer, Float> table = HashBasedTable.create();

        table.put("a", 1, 1.1f);
        table.put("a", 2, 2.2f);


        System.out.println(table.row("a"));
        System.out.println(table.column(2));
        System.out.println(table.row("b"));
        System.out.println(table.column(1));

        Map<String, Float> column = table.column(1);

    }
}

/*
{1=1.1, 2=2.2}
{a=2.2}
{}
{a=1.1}

感悟:通过r或者c进行查找,得到的是一个包含其它2个字段的map
 */

2.putAll 和 遍历

复制代码
package org.example.testhashbasedtable;

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

public class TestHashBasedTable {
    public static void main(String[] args) {
        // 数据源1
        Table<String, Integer, Float> table = HashBasedTable.create();

        table.put("a", 1, 1.1f);
        table.put("a", 2, 2.2f);

        // 数据源2
        Table<String, Integer, Float> table2 = HashBasedTable.create();
        table2.put("a", 11, 1.1f);
        table2.put("aa", 2, 2.2f);

        // 数据源1添加到数据源2中
        table2.putAll(table);

        System.out.println(table2);

        // 遍历所有的条目
        for (Table.Cell<String, Integer, Float> cell : table2.cellSet()) {
            System.out.println(cell.getRowKey() + "  " + cell.getColumnKey() + " " + cell.getValue());
        }
    }
}

/*
{a={11=1.1, 1=1.1, 2=2.2}, aa={2=2.2}}
a  11 1.1
a  1 1.1
a  2 2.2
aa  2 2.2

 */

行、列、值 就是excel中的表格的抽象。

3.putAll的话,相同行列的是会被覆盖。相当于2个Excel表的融合。

复制代码
package org.example.testhashbasedtable;

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

import java.util.Set;

public class Test2 {
    public static void main(String[] args) {
        // table1
        Table<Integer, Integer, Set<Integer>> table = HashBasedTable.create();
        table.put(1, 2, Sets.newHashSet(4, 5, 6));

        // table2
        Table<Integer, Integer, Set<Integer>> table2 = HashBasedTable.create();
        table2.put(1, 2, Sets.newHashSet(6, 7, 8));

        // 把table2加到table1中
        table.putAll(table2);

        // 发现相同行列的肯定是被覆盖了
        System.out.println(table);
    }
}

/*
{1={2=[8, 6, 7]}}
 */
相关推荐
戴西软件22 分钟前
戴西软件入选2026年安徽省制造业数智化转型服务商名单
java·大数据·服务器·前端·人工智能
爱棋笑谦23 分钟前
springboot—数据源相关配置
java·spring boot·spring
budingxiaomoli9 小时前
Spring IoC &DI
java·spring·ioc·di
Spider Cat 蜘蛛猫9 小时前
Springboot SSO系统设计文档
java·spring boot·后端
未若君雅裁9 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
学习中.........9 小时前
从扰动函数的变化,感受红黑树带来的性能提升
java
计算机安禾9 小时前
【c++面向对象编程】第24篇:类型转换运算符:自定义隐式转换与explicit
java·c++·算法
weixin1997010801610 小时前
【保姆级教程】淘宝/天猫商品详情 API(item_get)接入指南:Python/Java/PHP 调用示例与 JSON 返回值解析
java·python·php
环流_10 小时前
redis核心数据类型在java中的操作
java·数据库·redis
雨辰AI10 小时前
SpringBoot3 项目国产化改造完整流程|从 MySQL 到人大金仓落地
java·数据库·后端·mysql·政务