У меня есть файл, в котором много случайных целых чисел (около миллиона), каждое из которых разделено пробелом. Мне нужно найти топ-10 наиболее часто встречающихся номеров в этом файле. Каков наиболее эффективный способ сделать это в Java?
Я могу думать о
1. Создайте хэш-карту, ключом является целое число из файла, а значением - количество. Для каждого числа в файле проверьте, существует ли этот ключ в хэш-карте, если да, значение ++, в противном случае введите новую запись в хеш
2. Сделайте BST, каждый узел является целым числом из файла. Для каждого целого числа из файла посмотрите, есть ли в BST узел, если да, укажите значение ++, значение является частью узла.
Я чувствую, что хэш-карта - лучший вариант, если я могу придумать хорошую функцию хеширования,
Может кто-нибудь подскажет мне, как лучше всего это сделать? Есть ли еще какой-нибудь эффективный алгоритм, который я могу использовать?