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 语法。
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 语法。