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

运行结果:

相关推荐
程序员岳焱1 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
麦兜*1 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
大只鹅2 小时前
解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
spring boot·后端·elasticsearch
ai小鬼头2 小时前
AIStarter如何快速部署Stable Diffusion?**新手也能轻松上手的AI绘图
前端·后端·github
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
bobz9653 小时前
动态规划
后端
stark张宇3 小时前
VMware 虚拟机装 Linux Centos 7.9 保姆级教程(附资源包)
linux·后端
亚力山大抵4 小时前
实验六-使用PyMySQL数据存储的Flask登录系统-实验七-集成Flask-SocketIO的实时通信系统
后端·python·flask
超级小忍4 小时前
Spring Boot 中常用的工具类库及其使用示例(完整版)
spring boot·后端
CHENWENFEIc5 小时前
SpringBoot论坛系统安全测试实战报告
spring boot·后端·程序人生·spring·系统安全·安全测试