Как я должен эффективно хранить массовые числовые данные в Java? Пожалуйста, оцените мое решение - PullRequest
0 голосов
/ 28 января 2011

Я - специалист по программному обеспечению, разрабатывающий программу, которая анализирует файлы данных, выводимые промышленным симулятором, для выполнения вычислений на них.

Основная структура файлов выглядит следующим образом:

property1

Временной шаг 1 0,000 3,141 5,131 и т. Д ...

Временной шаг 2 3.323 0.000 и т. Д. ...

и т.д ...

Данные должны быть собраны в какую-то структуру данных, чтобы обеспечить эффективные расчеты. Может быть несколько миллионов точек данных, хотя многие имеют одинаковое значение.

Мое решение (вложенные HashMaps):

Основной объект, DataContainer, имеет HashMap, который содержит имена свойств в качестве ключей. Эти ключи связаны с их собственными HashMaps, которые содержат числа временного шага в качестве ключей. Эти ключи связаны с их собственными HashMaps, которые содержат значения данных в виде ключей, которые связаны с количеством раз, которое это значение встречается в пределах временного шага.

Быстрая Иллюстрация:

DataContainer Свойства:

  property 1 : 
               time 1 - 0.000, 4 | 3.313, 10 etc...
               time 2

Ждем отзывов людей.

Ответы [ 3 ]

0 голосов
/ 28 января 2011

Моя идея:

class DataContainer{
   TreeMap timestamp<String, SortedList<Integer>>;

}
0 голосов
/ 28 января 2011

Я бы выбрал два массива одинаковой длины, например double[] value; int[] count;.Это, безусловно, занимает гораздо меньше места, чем Map.Entry, заполненный коробочными значениями.Я бы сделал вокруг них простой класс и поместил бы его в вашу карту.

0 голосов
/ 28 января 2011

Если вы заинтересованы в эффективности, вам лучше создать собственные классы с атрибутами / геттерами / сеттерами для свойств.

HashMaps, содержащие HashMaps и т. Д .:

  • займет большепробел,
  • медленнее,
  • сложнее в использовании ... особенно если вы хотите перебирать элементы в предсказуемом порядке, а
  • сводит на нет преимущества Javaтип внутренней безопасности при компиляции.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...