java - 索引一个简单的 Java 记录
问题描述
我有一个 Java 对象,Record
. 它表示作为 SQL 执行结果的单个记录。CQEngine可以索引集合Record
吗?
我的课是这样的
public class Record {
private List<String> columnNames;
private List<Object> values;
... Other getters
}
我看过一些例子,但我没有运气。
我只想用它的名称和相应的值来索引特定的列。这可以使用 cqengine 来实现,还是有任何其他替代方法可以实现。
谢谢。
解决方案
这似乎是一种奇怪的数据建模方式,但如果您愿意,可以将 CQEngine 与该模型一起使用。
(首先,CQEngine 不会使用您的列名,因此您可以删除该字段。)
为此,您需要为值列表中的每个索引定义一个 CQEngine虚拟属性。
每个属性都需要使用将存储在该列/索引中的数据类型进行声明,并且需要能够将值列表中该索引处的对象转换为适当的数据类型(String
,Double
等Integer
。 )。
因此,假设您Record
有一个名为'price'的列,它的类型为Double
,并存储在5
值列表中的索引处。您可以定义一个读取它的属性,如下所示:
public static final Attribute<Record, Double> PRICE =
attribute("PRICE", record -> ((Double) record.values.get(5));
如果这听起来很复杂,那是因为这种建模数据的方式使事情变得有点复杂:) 使用利用 Java 类型系统(您的模型没有)的数据模型通常更容易。因此,您需要自己以编程方式跟踪每个字段的数据类型等。
不过,CQEngine 本身可以在该模型上正常工作,因为最终 CQEngine 属性不需要读取字段,属性只是被编程为获取值的函数。
上面有很多东西没有介绍。例如,您的值可以为空吗?(如果是这样,您应该使用CQEngine 文档中讨论的可为空的各种属性。或者,您的每个对象是否有不同的列集?(如果是这样,您可以在遇到新的属性时即时创建属性列,但您可能应该缓存您在某处创建的属性)。Record
希望有帮助,Niall(CQEngine作者)
推荐阅读
- api - 在我向它发送资金后,ETH 没有出现在我的主网上节点上
- python - 返回一个数组,其中包含所有 predict_prices 和实际价格之间的平方误差(来自数据集)
- python - 错误地我会给aws ubuntu服务器中的主目录777权限
- windows - 在 Windows 10 20H2 上,管理员无法在 sysprep 后管理 Windows Defender
- file - 当我在内核中 cd 进入文件夹时,有没有办法在文件夹中执行文件/文件夹。我正在使用基于 Unix 的系统(Arch、Manjaro、MacOSX 等)
- r - 将函数参数传递到 mutate 语句的左侧
- arduino - 将草图上传到 arduino uno/esp8266 时出现问题
- sql - 在 Analysis Services 多维多维数据集中硬编码维度表的最佳方法
- oracle - 尝试在 Oracle WarehouseBuilder 11g 上创建新工作区时出错
- javascript - 关于 Apache 文档根目录的困惑