[AIGC]Guava中Table、HashBasedTable和TreeBasedTable的详解

Google的Guava库在Java集合框架中增加了许多新的集合类型,其中包括Table、HashBasedTable以及TreeBasedTable。这些建议设计成可以与JDK集合共存,提供了一些我们认为有广泛用途但JDK未提供的功能。

1. Table

Guava的Table代表了一个包含行、列和相应单元格值的表格结构。行和列都可以是任何类型的对象,并且提供了对数据的多种视图。

主要的操作包括:

  • put(R rowKey, C columnKey, V value):添加一个值到表中
  • get(R rowKey, C columnKey):通过行键和列键获取某一个值
  • contains(R rowKey, C columnKey):判断表中是否存在某个元素
  • row(R rowKey):获取一行中所有的元素
  • column(C columnKey):获取一列中所有的元素

2. HashBasedTable

HashBasedTable类实现了Table接口,使用链接哈希表来存储它的元素。rowKey和columnKey都必须是唯一的,组合它们可以找到特定的值。

HashBasedTable特别适合于行和列都非常稀疏的情况。也就是说,对于大部分可能的列和行的组合,其值会是null。

3. TreeBasedTable

TreeBasedTable类也实现了Table接口,它和HashBasedTable很相似,不同的是它按照行和列的顺序存储值。行和列的键需要实现Comparable接口,或者在创建时提供Comparator。

如果你需要对数据集进行排序操作或者需要快速查找操作,那么TreeBasedTable会是一个更好的选择。在处理具有显著排序特性的数据时,TreeBasedTable的表现更佳。

为了最大化效率,你的数据应该尽可能地集中在几个列上。

总结

Guava的Table提供了一种新的集合类型,使得使用两个键(行和列)来索引值成为可能。而HashBasedTable和TreeBasedTable则是Table的两种不同的实现,分别适应了不同的使用场景。

相关推荐
小和尚同志1 小时前
虽然 V0 很强大,但是ScreenshotToCode 依旧有市场
人工智能·aigc
后端小肥肠2 小时前
18条作品狂揽390万赞?我用Coze破解了“情绪放大镜”的流量密码
人工智能·aigc·coze
Electrolux5 小时前
[wllama]纯前端实现大语言模型调用:在浏览器里跑 AI 是什么体验。以调用腾讯 HY-MT1.5 混元翻译模型为例
前端·aigc·ai编程
147AI7 小时前
LLM 应用评测闭环:eval.jsonl + LLM-as-judge + 线上指标(含 Python 最小实现)
aigc·ai编程
哥只是传说中的小白8 小时前
Nano Banana Pro高并发接入Grsai Api实战!0.09/张无限批量生成(附接入实战+开源工具)
开发语言·数据库·ai作画·开源·aigc·php·api
向量引擎8 小时前
【万字硬核】解密GPT-5.2-Pro与Sora2底层架构:从Transformer到世界模型,手撸一个高并发AI中台(附Python源码+压测报告)
人工智能·gpt·ai·aigc·ai编程·ai写作·api调用
DisonTangor10 小时前
UltraShape 1.0: 高保真三维形状生成:基于可扩展几何优化
人工智能·3d·开源·aigc
GISer_Jing11 小时前
智能体基础执行模式实战:拆解、决策、并行、自优化
人工智能·设计模式·aigc
Mintopia12 小时前
🌍 AI 自主决策:从文字到图像与声音的三元赋能之路
人工智能·算法·aigc
GISer_Jing13 小时前
提示链(Prompt Chaining)、路由、并行化和反思
人工智能·设计模式·prompt·aigc