Guava使用之Table

提升编程效率10倍!Google Guava库Table神器大揭秘 通过上述分析和代码示例,我们可以看到Guava的Table接口在处理复杂数据结构时的强大功能。它不仅提供了类型安全、易用性和内存效率,还支持不可变的实现。希望这篇文章能帮助你在实际开发中更好地使用Guava库,提升编程效率。如果你有任何问题或建议,欢迎在评论区留言交流哦!😊。 阅读详情

当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现。
为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景。Table支持“row”和“column”,而且提供多种视图。

@Test
public void testTable(){
    Table<String, Integer, String> aTable = HashBasedTable.create();

    for (char a = 'A'; a <= 'C'; ++a) {
        for (Integer b = 1; b <= 3; ++b) {
            aTable.put(Character.toString(a), b, String.format("%c%d", a, b));
        }
    }

    System.out.println(aTable.column(2));
    System.out.println(aTable.row("B"));
    System.out.println(aTable.get("B", 2));

    System.out.println(aTable.contains("D", 1));
    System.out.println(aTable.containsColumn(3));
    System.out.println(aTable.containsRow("C"));
    System.out.println(aTable.columnMap());
    System.out.println(aTable.rowMap());

    System.out.println(aTable.remove("B", 3));
}

输出结果为:

{A=A2, B=B2, C=C2}
{1=B1, 2=B2, 3=B3}
B2
false
true
true
{1={A=A1, B=B1, C=C1}, 2={A=A2, B=B2, C=C2}, 3={A=A3, B=B3, C=C3}}
{A={1=A1, 2=A2, 3=A3}, B={1=B1, 2=B2, 3=B3}, C={1=C1, 2=C2, 3=C3}}
B3

Table视图:

  • rowMap()返回一个Map<R, Map<C, V>>的视图。rowKeySet()类似地返回一个Set<R>。
  • row(r)返回一个非null的Map<C, V>。修改这个视图Map也会导致原表格的修改。
  • 和列相关的方法有columnMap(), columnKeySet()和column(c)。(基于列的操作会比基于行的操作效率差些)
  • cellSet()返回的是以Table.Cell<R, C, V>为元素的Set。这里的Cell就类似Map.Entry,但是它是通过行和列来区分的。

Table有以下实现:

  • HashBasedTable:基于HashMap<R, HashMap<C, V>>的实现。
  • TreeBasedTable:基于TreeMap<R, TreeMap<C, V>>的实现。
  • ImmutableTable:基于ImmutableMap<R, ImmutableMap<C, V>>的实现。(注意,ImmutableTable已对稀疏和密集集合做了优化)
  • ArrayTable:ArrayTable是一个需要在构建的时候就需要定下行列的表格。这种表格由二维数组实现,这样可以在密集数据的表格的场合,提高时间和空间的效率。
AI 推理与服务(AI Inference and Serving) AI 推理和服务是现代分布式系统中的重要组成部分。通过合理应用 AI 推理和服务的最佳实践,可以显著提高系统的智能性和用户体验。本章介绍了 AI 推理和服务的核心概念、最佳实践以及在分布式系统中的应用,希望这些内容能帮助您构建更智能、更高效的分布式系统。 阅读详情

相关推荐

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2088

Guava类库——Table详解

Guava 是一套来自 Google 的核心 Java 库,其中包括新的集合类型、不可变的集合、图库,以及并发、I/O、散列、缓存、基元、字符串等实用工具!它更细粒度的提供了一些 jdk 没有的api和优化了一些操作,可以让你的代码更加优雅简洁高效。它被广泛用于 Google 内部的大多数 Java 项目,也被许多其他公司广泛使用。它被广泛用于 Google 内部的大多数 Java 项目,也被许多其他公司广泛使用。.........

西凉的悲伤博客 7219

云模型在综合评价过程中的应用

目录 1 云模型标尺(标准云模型)的构建方法 1.1 通过正态云的“3En 规则”来表示评价论域 1.2 通过论域的边界值隶属度相等来表示评价论域 1.3 通过黄金分割法来表示评价论域 2 确定评价结果的过程 2.1 基本云发生器 2.2 X条件云发生器 2.3 两种方法的区别 综合评价问题一般分为以下六个步骤 1、明确评价目的; 2、确定被评价对象; 3、建立评价指标体系(包括收集评价指标的原始值、评价指标的若干预处理等); 4、确立与各项评价指标相对应的权重系数; 5、选..

weixin_62223576的博客 1万+

guava之Table

在guava库中还提供了一种二维表结构:Table。使用Table可以实现二维矩阵的数据结构,可以是稀溜矩阵。通常来说,当你想使用多个键做索引的时候,你可能会用类似Map(FirstName, Map(LastName, Person))的实现,这种方式很丑陋,使用上也不友好。Guava为此提供了新集合类型Table,Table是Guava提供的一个接口 Interface Table(R,C,V)

quniMdejiangyou的博客 6083

SpringBoot实现电子发票生成

电子发票是近年来比较流行的一种票据形式,它取代了以往传统的纸质发票,具有减少纸张浪费、方便有效查验等优点。本文将介绍如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。在本文中,我们介绍了如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。

不愧是暮言的博客 6090

AS7341光谱传感器实战:如何用STM32F103精准测量环境色温(附完整代码)

本文详细介绍了如何使用STM32F103驱动AS7341光谱传感器实现环境色温的精准测量。从硬件连接到驱动开发,再到色温计算算法的实现,提供了完整的代码示例和优化建议,帮助开发者在智能照明、农业监测等领域快速应用AS7341进行高精度色温检测。

weixin_30352645的博客 476

Guava 新集合—Table 等详解

Guava的Table是一种处理"行-列-值"三维数据结构的集合类,它简化了双重Map的嵌套结构,提供多种实现方式:HashBasedTable(基于HashMap)、TreeBasedTable(有序)、ArrayTable(固定行列)和ImmutableTable(不可变)。Table支持丰富的行列操作,如获取行/列映射、单元格遍历等,并提供了数据转换、表格化输出等高级功能。此外,Guava还包含Multimap、Multiset、BiMap等实用集合类。Table适用于成绩管理、销

油墨香^-^的博客 1303

深入解析FOC电流环PI参数整定:从理论到实践

本文深入解析了FOC(磁场定向控制)中电流环PI参数整定的核心原理与实践方法。文章从永磁同步电机模型出发,详细阐述了基于带宽与零极点对消的工程法及考虑逆变器延迟的二阶系统整定法两种经典策略,并提供了从理论计算到安全上电调试的完整步骤与常见问题解决方案,帮助工程师精准调校电机控制性能。

weixin_29164497的博客 445

guava table

1、guava的table类,可代替map&lt;string,map&lt;string,string&gt;&gt;,使用非常方便。 import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.util.Map; import java.util.Set...

weixin_42255981的博客 2897

SpotBugs实战:10大类Bug检测规则详解与代码优化实例(附避坑清单)

本文深入解析SpotBugs在Java开发中的实战应用,详细讲解10大类Bug检测规则与代码优化实例,包括NPE防御、多线程安全、性能优化等关键问题。通过具体代码示例和避坑清单,帮助开发者提升代码质量,有效集成到CI/CD流程中。

weixin_42665255的博客 194

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了7个排查'Floating point exception'错误的实用步骤,包括边界条件检查、时间步长优化、求解器配置等关键技巧。通过系统化的诊断流程,帮助用户快速定位并解决CFD仿真中的浮点异常问题,提升计算稳定性。

weixin_42531886的博客 285

Guava Table:多维度的数据 Table

本身是二维的,但通过合理的设计,能够扩展其功能,支持三维甚至四维的数据存储和查询。这种方法能够让我们在复杂的数据模型中进行更多维度的索引和查询,适合多维数据分析和处理的场景。中进一步进行分组和索引,想要为每一个维度增加一个标识(比如多重索引),那么我们就需要更复杂的。的嵌套和多重索引功能,我们可以轻松实现多维度数据的管理。举个例子,如果我们想表示一个多维度的时间序列数据,我们可以将。如果你想要在多维度的数据结构中进行查询或遍历,可以使用嵌套的。的每个单元格进一步封装和索引,从而实现多维度的数据管理。

qq_42878414的博客 495

如何解除Uniaccess管控??

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2380

java guava table_java – 使用Guava的Tables.toTable

我有一个持有两个atrributes的东西:状态(一个枚举)和所有者(另一个对象).我想获得一个Guava Table< owner,status,Long>通过遍历ArrayList并计算对象,如果某些状态不在List中,则计数为0,如下所示:[owner1, status1, 2], [owner1, status2, 0], [owner2, status1, 3], [owne...

weixin_35975197的博客 626

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Guava系列:Table使用方法(根据行列查找组合)

场景 Table使用方法(根据行列查找组合) demo package com.nio4444.demo; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; import java.util.Map; import java.util.Set; public class TableDemo { public static void main(String[

NIO4444 771

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Google工具库guava中集合类型Table

Table:它具有两个key[行, 列],对应一个值 Table是Guava提供的一个接口Interface Table<R,C,V> Table可以看成:Table<R,C,V> == Map<R,Map<C,V>> 它的主要方法: S.N. 方法 & 描述 1 Set<Table.Cell<R,C,V>> cellSet() 返回集合中的所有行键/列键/值三元组。 2 void cl.

AlbenXie的博客 1321

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java guava table_Guava Table接口

全屏Table代表一个特殊的映射,其中两个键可以在组合的方式被指定为单个值。它类似于创建映射的映射。接口声明以下是 com.google.common.collect.Table 接口的声明:@GwtCompatiblepublicinterfaceTable接口方法S.N.方法 & 描述1Set> cellSet()返回集合中的所有行键/列键/值三元组。2void clear(...

weixin_29332867的博客 393

Table——高淇JAVA300讲笔记之Guava

案例一:学生成绩表格的行和列转换 1 package com.bjsxt.others.guava; 2 3 import java.util.Map; 4 import java.util.Set; 5 6 import com.google.common.collect.HashBasedTable; 7 import com.google.common.c...

weixin_30354675的博客 111

Guava 心得:Guava 新集合 —— Table 等

Table 当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map<FirstName, Map<LastName, Person>>来实现。为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景。Table支持“row”和“column”,而且提供多种视图。 @Test public void TableTest(){ Table<String, Integer, String> aTab

weixin_42073629的博客 530

Google guava之Table简介说明

Google guava之Table简介说明

qq_25073223的博客 721

《Guava Table接口》学习笔记

Table代表一个特殊的映射,其中两个键可以在组合的方式被指定为单个值。它类似于创建映射的映射。 接口声明 以下是 com.google.common.collect.Table<R,C,V> 接口的声明: @GwtCompatible public interface Table<R,C,V> 接口方法 Table 例子 选择使用任何编辑器创建以下java程序在 C:/> Guava Guava...

hupengfei_shenyang的博客 298

Guava库学习:学习Collections(七)Table

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34194317的博客 230

java hashbasedtable_Guava学习笔记:Guava新集合-Table等

Table当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的Map>来实现。为此Guava提供了一个新的集合类型-Table集合类型,来支持这种数据结构的使用场景。Table支持“row”和“column”,而且提供多种视图。@Testpublic voidTableTest(){Table aTable =HashBasedTable.create();for (char...

weixin_39673037的博客 984

Guide to Guava Table

正好在项目中遇到两个元素决定一个值的情况,发现Guava的Table非常完美的满足了这样一个数据结构,我得mark下,so show my code: @Test public void guavaTableTest() { Table&lt;Integer, Integer, String&gt; animalTable = HashBasedTable.create();

jiaobuchong的专栏 689

Guava-Collections-Table

简介 在公司开发项目过程中,遇到了这样一个需求:不同的中间件(redis,mysql,kafka...)有不同的字段,存储在不同的表中,需要向数据库表中添加对应信息.用到了Guava中的Table以及@insertProvide,根据相关内容写了如下Demo Table详细介绍 @Test public void testHashTable(){ //创建一个三维的table Table<String,String,String&...

qq_44447372的博客 1129

Java Guava Table接口

Java Guava Table接口

weixin_44092176的博客 317
上一篇: Guava使用之Splitter
下一篇: 对象池和线程池
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值