Какая структура данных Java лучше всего подходит для моего приложения? - PullRequest
1 голос
/ 04 февраля 2012

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

Ответы [ 2 ]

3 голосов
/ 04 февраля 2012

Вам нужен HashMap, в котором ключом являются ваши «данные», а в качестве значения - счетчик.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html

Причина того, что это хороший выбор, состоит в том, что он имеет O (1), "содержащий" время проверки, поиска и вставки. Пока вам не нужно сортировать данные, это отличный выбор.

Этот непроверенный код должен помочь вам начать. Замените String типом ваших данных. Если это пользовательский класс, вы должны перегрузить hashCode() и equals().

HashMap<String, Integer> map = new HashMap<String, Integer>();

...

Integer i = map.get(data);
if(i == null) {
   map.put(data, 1);
} else {
   map.put(data, i + 1);
}
1 голос
/ 04 февраля 2012

Звучит так, как будто вам нужно использовать HashMap<YourClass, Integer> ( ссылка ).

Значение - счетчик, поэтому оно является целым числом. когда что-то приходит, вы проверяете, существует ли элемент с таким ключом. Если нет, вы добавляете его (со значением 1), в противном случае вы добавляете его со значением один плюс предыдущее значение.

Вы можете оптимизировать это, вместо того, чтобы Integer сделать ваше значение пользовательским классом, который упаковывает целое число и позволяет увеличивать его. Таким образом, вам не нужно будет вставлять в хэш-карту каждый раз, когда вы увеличиваете.

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