Хорошая коллекция для отслеживания персонажей - PullRequest
2 голосов
/ 21 февраля 2011

Просто общий вопрос (а я в некотором роде новичок в java), но что было бы хорошей коллекцией, в которую я мог бы добавлять объекты и отслеживать, сколько из каждого я добавил?Например, если бы я добавил алфавит символ за раз, он будет иметь 26 разных символов и соответствующее значение 1 для каждого.Аналогично, добавление 'z' 10 раз будет иметь z с ассоциированным 10. Предложения?Название «hashtable» звучало многообещающе, но я не думаю, что хочу использовать это ...

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

Первое, что приходит на ум, это словарь. Ключом будет значение ASCII символа, а значением будет количество раз его использования. Не обязательно самый эффективный способ сделать это, но это один из самых простых.

Вы также можете сделать это с одним массивом и сместить значение 0, чтобы быть первым символом ASCII.

Если вы хотите очень быструю реализацию, HashMap на самом деле очень хорошая идея.

Для параллелизма вы можете использовать ConcurrentHashMap.

0 голосов
/ 21 февраля 2011

Нет необходимости использовать специальную структуру данных, так как простое использование HashMap должно работать хорошо. При добавлении символа myChar вы вызываете get (myChar) и, если он равен нулю, создаете новый элемент для карты для этого символа со значением Integer, равным 1. Если карта возвращает целое число, просто добавьте один к нему, а затем положить его обратно на карту.

0 голосов
/ 21 февраля 2011

Multiset - структура данных для этой цели. Гуава имеет реализацию.

Multiset<Character> charFrequency=HashMultiset.create();
charFrequency.add(char1);
charFrequency.add(char1);
charFrequency.count(char1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...