Здравствуйте!
Любопытно встретить врача на Тостере. :-)
Я думаю, что смог бы вам помочь, однако из-за расплывчатости описания структур данных и отсутствия понимания предмета не могу дать точного ответа.
345,500,420,111111111111,222222222222,333333333333,12052018,09022018,06012018
.........
245,777777777777,18022018
345,500,420 - это наверно v1, v2, v3 (v - volume, тип integer)
111111111111,222222222222,333333333333 - это наверно te1, te2, te3 (te - transfusion environment, тип integer)
12052018,09022018,06012018 - это наверно ed1, ed2, ed3 (ed - expiration date, тип Date)
Затем в 3-й строке примера
245 - это наверно v1
777777777777 - это наверно te1
18022018 - это наверно ed1
Если я верно понял, в каждой строке CSV может храниться разное количество столбцов, в зависимости от типа ТС. Это так?
Почему в 1-й строке 9 значений, а в 3-й лишь 3?
Можно ли заранее знать сколько значений в некоторой строчке? Или для этого нужно прочесть все значения поочередно в заданной строке?
Всю эту кашу с данными нужно понять с точки зрения:
- типов данных
- размерности каждого типа данных
- зависимости одного типа данных от другого
Все эти данные считываются в 3-мерный массив
Есть ощущение, что это излишнее пересложнение. Я думаю это вряд ли это имеет что-то общее с линейной алгеброй.
По-моему, на 99% имеются более оптимальные решения по работе с вышеприведёнными данными.
В первую очередь, формат CSV не годится для хранения векторов данных разных длин (переменного количества столбцов). Во-вторых, он не годится в качестве БД. Обычно CSV является промежуточным форматом для обмена информации, но не более того. Вместо CSV стоило взять реляционную СУБД (MySQL, Firebird, SQL Server Express).
А если система однопользовательская и не нужна авторизация пользователей, то вообще достаточно СУБД SQLite (через интерфейс JDBC), файл БД которой представляет из себя единичный файл .sqlite.
P.S.
И когда же у вас получается находить время программировать? :-o