啊? 又要洗数据啦!! 还是两个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));
    }

运行结果:

相关推荐
摸鱼的春哥6 分钟前
春哥的Agent通关秘籍07:5分钟实现文件归类助手【实战】
前端·javascript·后端
Victor35622 分钟前
MongoDB(2)MongoDB与传统关系型数据库的主要区别是什么?
后端
JaguarJack23 分钟前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端·php·服务端
BingoGo24 分钟前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端
Victor35625 分钟前
MongoDB(3)什么是文档(Document)?
后端
牛奔2 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
想用offer打牌7 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
KYGALYX9 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法9 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate