假设我们有表示已知大小表的传入值,如下所示:
- a b c
x 06 07 08
y 10 11 12
z 14 15 16
但是值是从流/迭代器或其他串行形式到达的,从上到下,从左到右依次为:
- a b c x 06 07 08 y 10 11 12 z 14 15 16
假设数据来自某个提供商,例如newVal = provider.getNext()
,我们无法反向。
将传入数据放入三种结构中的最优雅,最有效(以预先面向对象)的方式是什么:
top : 0=>a 1=>b 2=>c
left: 0=>x 1=>y 2=>z
data: 0,0=>06 1,0=>07 2,0=>08
0,1=>10 1,1=>11 2,1=>12
0,2=>10 1,2=>11 2,2=>12
使用一些开关/委托或者只是缓冲所有数据并在循环中提取我们需要的部分会更好吗(假设每个值具有相同的类型,让我们说整数)?
假设我们不需要实时收集适当结构的数据(整个数据可以缓冲,但我寻找有效的解决方案)。
此问题中的真实世界数据是三个“地图”,如果重要的话,每个大小约为500x500,来自java poi扩展名中的.xls文件。
答案 0 :(得分:0)
我认为优雅和效率取决于您要针对数据运行的任务。
在一般情况下,在我看来,最有效的方法是以原始格式存储数据(如060708101112141516
)并假设元素大小是常量并且我们知道'列'的数量,总是可以获取指向任何知道其坐标(行/列名称或数字)的元素的指针。
每个三重映射也可以从这样的数据块中检索。
但是如果你的任务不同于通过索引获取元素,那么实现可能会有所不同。
答案 1 :(得分:0)
我发现了这个:
"矢量"
的矢量版本