将多键列表转换为多维有序映射

时间:2013-07-09 09:52:13

标签: java type-conversion sortedlist multikey

我正在使用多个密钥袋来计算某些值组合的出现次数,我想知道是否有一种优雅的方法将这些袋子转换为嵌套的SortedMaps,如TreeMaps。嵌套TreeMaps的数量等于多键中的组件数。例如,假设我有一个具有定义键的多键包:

multiKey = new String[]{"age", "height", "gender"}
因此,我想从中获得的对象是:

TreeMap<Integer, TreeMap<Integer, TreeMap<Integer, Integer>>>

并使用多键包中的值填充它。因此,嵌套结构将包含多键中的值,如下所示:

TreeMap<"age", TreeMap<"height", TreeMap<"gender", count>>> 

其中“age”由bag中的相应值替换,“height”也是等等。 count 是该特定组合的出现次数(由此返回)多钥匙包本身)。

当然,多键的组件数是动态的。 如果multiKey只有两个组件,那么结果对象将是:

TreeMap<Integer<TreeMap<Integer, Integer>>

从包中检索值并填充(嵌套)TreeMaps并不代表问题。只有转换。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

为什么不创建自己的类来将相关数据组合在一起,而不是使用一堆包装器?这似乎可以简化这个过程。

尽管如此如果您真正想要的是能够对您的数据执行复杂查询(伪代码):

  

选择全部(MALES&gt; = 25&amp;&amp; HEIGHT&lt; 6'1)&amp;&amp; (FEMALES&lt; 40&amp;&amp; HEIGHT&gt; 5'0)

然后你应该考虑使用数据库。我并不是说Tree不好,但如果您的目标是能够轻松/快速地执行复杂查询,那么数据库就是最佳选择。当然,您可以编写自己的类/方法来为您执行这些计算,但是如果您不需要重新发明轮子呢?