Table 类可以处理不同数据类型的数据结构?

Table-like data structures that can handle different data types?

Java 中是否有任何数据结构 and/or 库允许创建本质上是 table 带有字符串 column/row 标签的数据和数字数据?它不需要显示给用户,只是供我的程序使用以便有效访问数据。

例如,如果我想访问 2021 年 7 月 1 日以来帐户 #123 的销售收入数据。据我所知,目前我能想到的唯一方法是拥有一个极其复杂的地图网络,其中包含引用最终值列表的字符串键。例如,我可以创建一个映射,其中的字符串键引用帐户名称,另一个映射作为值。该地图可以包含表示日期的字符串,关联值为该日期的收入。

我认为必须有一种更简单的方法来完成此操作。我唯一的其他想法是从字面上创建一个 excel sheet VIA java (Apache POI) 并将我所有的号码发送到那里以供参考,这似乎有很多额外的不必要的工作和处理程序。

我没有足够的数据来保证创建一个实际的数据库。我真的只需要一些足够灵活的小规模来处理不同的数据类型,这样我就可以有字符串标签。

也许有一种方法可以用二维数组做到这一点,但我只是想不出怎么做,因为它们不能处理不同的数据类型。

我最后的想法是尝试实现一个 guava table,虽然我不确定这样的东西是否适用于我的用例,目前正在对 guava table工作。

你几乎已经定义了 “relational database”

关系数据库中的 table 是一个命名的行(记录)集合,其值由列定义。这些列是有名称的,每一列都是由您指定的,用于保存某种数据(数据类型)。

比如你说:

For example, I could create a map with String keys referencing the account name with another map as the value. That map could contain a string representing a date with the associated value being the revenue for that date.

这听起来像 account table 有一个文本类型的帐号列(或 VARCHAR)和一个客户名称列。帐号列包含唯一标识每个帐户的值,因此我们称其为主键。

一个相关的table可能被命名为valuation,其中有一列是日期类型,一列是数字类型的评估金额。您还可以添加一个主键,可能是一个自动生成的序号。您将拥有一个外键,该外键是来自父 account、帐号的主键值的副本。

作为 Java 开发人员,您有多种数据库引擎选择。我建议使用 H2 数据库引擎,因为它很容易嵌入到您的应用程序中,因为 H2 是用 Java 编写的。而且它很容易上手,有很好的文档,并且正在积极开发中。但您还有其他选择,例如 Apache Derby、SQLite 等。在 Stack Overflow 上询问有关软件产品或库的具体建议显然是题外话,所以我就此打住。


如果您搜索 Stack Overflow,您会发现我的多个答案以及完整代码,用于使用来自 Java 中的 JDBC 代码的 H2 示例,包括实例化 DataSource、创建table、填充数据和 运行 检索数据的查询,使用 try-with-resources 语法。