表格类似于查询处理和数学运算的数据结构

时间:2013-06-27 05:08:21

标签: java data-structures

我希望有一个表格,表示具有多列的数据。例如考虑以下样本:

---------------------------------------------------------------
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
.
.
.
---------------------------------------------------------------

我想通过给定col中的值来查询此表格,例如在val32列中搜索值col2,该列应以相同的表格格式返回所有可与此查询匹配的行。

对于某些列,例如col5col6,我想执行数学操作/查询,例如getMax()getMin()getSum(),{ {1}}等...

对于这样的要求,任何人都可以建议任何类型的数据结构,以最好地解决我的目的吗?任何一个数据结构或它们的组合,考虑有效的操作(如上面的数学例子)和查询??

如果有人需要更多信息,请告诉我。

divideAll()

这应该足够有效,可以处理数亿行,并且还可以轻松有效地保留。

3 个答案:

答案 0 :(得分:1)

您需要的是一个由三部分组成的方法:

  1. 包含每列字段的Row
  2. 用于存储行并提供顺序访问的List<Row>
  3. 一个或多个Map<String,Row>Map<Integer,Row>,可通过各种列值快速查找行。如果列值不唯一,那么您需要MultiMap<...>实现(Internet上有几个可用)以允许给定键的多个值。
  4. 首先将Row个对象放在列表中,然后在加载所有行后构建索引。

答案 1 :(得分:0)

我认为下面应该有所帮助:

Map<String,List<Object>>
  1. 在“col2”中搜索“val32”,搜索(cal2,val32):
  2. 获取与cal2相关联的对象列表(map.get(“cal2”)),并迭代它们以查找该值是否存在。

    1. getSum(String columnName):
    2. 再次获取列表,迭代它添加这些值。返回最后的总和。

      由于您要添加对象列表,因此您可能希望从这些API中抛出ClassCasteException。

答案 2 :(得分:0)

最后,我计划使用Mongo数据库,而不是经历所有基本和复杂的实现。

我希望这能解决我的问题。或者,就速度,存储和所需操作的可用性而言,还有其他任何更好的数据库(如上所述)?