[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的两种不同的实现,分别适应了不同的使用场景。

相关推荐
wangruofeng4 小时前
一个 Markdown 文件攒下 37k 星,i-have-adhd 给 AI 输出立了 10 条规矩
github·aigc·ai编程
墨风如雪4 小时前
Grok Bot 从 0 到 1|用云电脑和插件,搭一个能干活的 X 助手
aigc
Csvn5 小时前
第 22 章 安全、合规与治理
人工智能·aigc·agent
全栈弄潮儿7 小时前
需求不清时,如何让 AI 帮你补全问题,而不是瞎写代码
aigc·openai·ai编程
AI创界者8 小时前
前沿多模态大模型 MiniMax-H3无审查 本地部署与深度实测指南
人工智能·aigc·音视频
程序员海军12 小时前
AI 越来越强,为什么打工人反而越来越累、越来越内耗了?
前端·程序员·aigc
山间小僧14 小时前
「AI学习笔记」Agent Memory(一)会话内记忆
aigc·agent·vibecoding
“AI国潮设计-小江”15 小时前
【Python/SDXL实战】潮汕国潮IP视觉落地:普宁英歌舞猫IP & 创意甜品设计(附ComfyUI工作流与商业授权说明)
开发语言·人工智能·python·prompt·aigc
Rocky Ding*16 小时前
一文读懂LLM Agent Skills 的运行时本质:从能力路由到渐进式披露
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·agent skills
Xu_youyaxianshen17 小时前
【OpenAI 昨天正式更新了 ChatGPT Images 2.5。】
chatgpt·aigc