Использование DataStructure для этого сценария - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть данные в следующей форме -

01/04/2011  - {00:00,1.0} ; {01:00,2.0} ; {02:00,1.5} ;{04:00,2.3} 
02/04/2011  - {00:00,2.0} ; {01:00,2.1} ; {02:00,1.5} ;{04:00,2.3}
03/04/2011  - {00:00,3.0} ; {01:00,2.0} ; {02:00,1.6} ;{04:00,2.3}
04/04/2011  - {00:00,1.0} ; {01:00,2.5} ; {02:00,1.57} ;{04:00,2.3}
05/04/2011  - {00:00,1.9} ; {01:00,2.7} ; {02:00,1.5} ;{04:00,2.3}
06/04/2011  - {00:00,1.08} ; {01:00,2.02} ; {02:00,1.9} ;{04:00,2.3}
07/04/2011  - {00:00,1.7} ; {01:00,2.0} ; {02:00,1.10} ;{04:00,2.3}

Я должен сохранить их в некоторой DataStructure, чтобы я мог получить к ним доступ, используя даты в качестве ключа. Также для определенного дня {kПары, v} должны быть упорядочены так, как они вставлены.

Просьба указать, какая модель данных лучше всего подходит для этого сценария, с указанием причины ее использования.Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 07 апреля 2011

Звучит так же, как Map<Date,List<Record>> для меня. Если вы используете HashMap, то поиск указанной даты будет операцией O (1). При таком подходе нет особого порядка.

В качестве альтернативы вы можете использовать LinkedHashMap, тогда порядок может быть сохранен, что может быть полезно, если вам нужно просмотреть записи в порядке дат.

1 голос
/ 07 апреля 2011

Похоже на MultiMap для меня.

MultiMap<Date, SomeRecord> records = ArrayListMultiMap.create();
records.put(..., ...);
0 голосов
/ 07 апреля 2011

Я думаю, что лучшее решение - это структура: http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html

Записи сохраняются в порядке их вставки. Есть еще один хороший момент - из-за хэширования ключа поиск в списке выполняется быстрее.

0 голосов
/ 07 апреля 2011

Из данных вашего примера видно, что значения для каждой даты - это просто набор чисел для каждого часа. Таким образом, вы можете просто использовать Map<Date, Float>, если для каждого номера всегда есть только одна дата и время. Например. «01.04.2011 00:00» - это «1.0», а «01.04.2011 01:00» - это «2.0». Вы можете сохранить их в порядке с помощью TreeMap<Date, Float> и выбрать нужные вам диапазоны дат с помощью метода subMap().

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