我想要一个类似表格的多列数据表示形式。例如考虑以下示例:
---------------------------------------------------------------
col1 col2 col3 col4 col5(numeric) col6(numeric)
---------------------------------------------------------------
val01 val02 val03 val04 05 06
val11 val12 val13 val14 15 16
val21 val22 val23 val24 25 26
val31 val32 val33 val34 35 36
.
.
.
---------------------------------------------------------------
我想通过给定列中的值查询此表,例如在 col2
列中搜索值 val32
,它应该以相同的表格格式返回与此查询匹配的所有行。
对于某些列,例如 col5
和 col6
,我想执行数学运算/查询,例如 getMax()
、getMin()
、getSum()
、divideAll()
等...
对于这样的要求,有人可以建议任何类型的数据结构最能解决我的目的吗?任何一种数据结构或它们的组合,考虑高效运算(如上面的数学示例)和查询??
如果有人需要更多信息,请告诉我。
编辑:附加要求
这应该足够高效,可以处理数亿行,并且可以轻松高效地持久保存。
最佳答案
您需要的是一个由三部分组成的方法:
- 一个
Row
包含每列字段的类 - 一个
List<Row>
存储行并提供顺序访问 - 一个或多个
Map<String,Row>
或Map<Integer,Row>
通过各种列值提供对行的快速查找。如果列值不唯一,那么您需要MultiMap<...>
允许给定键有多个值的实现(互联网上有多个可用的实现)。
Row
对象首先放置在列表中,然后在加载所有行后构建索引。
关于java - 用于查询处理和数学运算的表状数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334938/