啊? 又要洗数据啦!! 还是两个key决定一个表! 二维Map学习,基于guava的HashBasedTable

一个洗数据的需求,表设计的外建不能判断某一个数据源,还要根据tyoe来进行判断才可以。 那此时呆逼的查发能实现但不够优雅,于是乎想到了二维数组,查了下资料有相关的实现给大家分享下!!

背景

表设计如下:

通过map的话 就没办法很好的实现了,需要通过两个key 来确定一个 v 此时就想到了之前摸鱼看到过二维数组!!

不得不说 该摸鱼就得摸!

有了 HashBasedTable 就能很优雅的实现 取V的逻辑了!

HashBasedTable使用介绍

别忘记引入pom!

xml 复制代码
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
			<version>27.1-jre</version>
        </dependency>

代码!

typescript 复制代码
import com.google.common.collect.HashBasedTable;

public static void main(String[] args) {
        HashBasedTable<Integer, Integer, String> hashBasedTable = HashBasedTable
                .create();

        hashBasedTable.put(0, 1, "Hello Word");

        //判断row和column确定的二维点是否存在
        if(hashBasedTable.contains(0, 1)) {
            hashBasedTable.put(2, 3, "TEST1");
            hashBasedTable.put(2, 4, "TEST2");
        }

        //判断是否包含columnKey的值
        System.out.println("containsColumn -> " + hashBasedTable.containsColumn(3));
        //判断是否包含rowKey为0的视图
        System.out.println("containsRow ->" + hashBasedTable.containsRow(0));

        //获取row key为2的数据集
        Map<Integer, String> row = hashBasedTable.row(2);
        System.out.println("row ->" + JSONObject.toJSONString(row));

        //获取column为5的数据集
        Map<Integer, String> column = hashBasedTable.column(3);
        System.out.println("column ->" + JSONObject.toJSONString(column));

        //将table转换为Map套Map格式
        Map<Integer, Map<Integer, String>> rowMap = hashBasedTable.rowMap();
        System.out.println("rowMap ->" + JSONObject.toJSONString(rowMap));
        //获取所有的rowKey值的集合
        Set<Integer> keySet = hashBasedTable.rowKeySet();
        System.out.println("keySet -> " + JSONObject.toJSONString(keySet));

        System.out.println("hashBasedTable ->" + JSONObject.toJSONString(hashBasedTable));
    }

运行结果:

相关推荐
卜锦元5 分钟前
Golang后端性能优化手册(第二章:缓存策略与优化)
开发语言·数据库·后端·性能优化·golang
掘金酱10 分钟前
🏆2025 AI/Vibe Coding 对我的影响 | 年终技术征文
前端·人工智能·后端
狗头大军之江苏分军21 分钟前
2026年了,前端到底算不算“夕阳行业”?
前端·javascript·后端
宋情写24 分钟前
Springboot基础篇01-创建一个SpringBoot项目
java·spring boot·后端
今夕资源网26 分钟前
go-tcnat内网端口映射 端口穿透 GO语言 免费开源
开发语言·后端·golang·go语言·端口映射·内网端口映射
踏浪无痕32 分钟前
一个 Java 老兵转 Go 后,终于理解了“简单”的力量
后端·程序员·go
汪凝同学要努力32 分钟前
依赖注入 - Spring 在 IoC 容器里查找一个 Bean 的不同方式示例
后端
Tony Bai34 分钟前
告别“If-Else”地狱:OpenFeature 如何重塑 Go 应用的特性开关管理?
开发语言·后端·golang
代码扳手1 小时前
一次线上事故后的反思:Go 项目中如何构建可靠的单元测试
后端·go
Cache技术分享1 小时前
276. Java Stream API - 使用 flatMap 和 mapMulti 清理数据并转换类型
前端·后端