Предположим, у нас есть входящие значения, представляющие таблицу известного размера, например:
- 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()
, и мы не можем идти в обратном направлении.
Какой самый элегантный и эффективный (preffer объектно-ориентированный) способ поместить входящие данные в три структуры:
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, извлеченный из файла .xls в расширении java poi, если это важно.