Самый эффективный способ собрать уникальные значения в массивном текстовом файле? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть набор больших текстовых файлов, которые в общей сложности содержат около 3 миллионов строк.

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

Я предполагаю, что самый быстрый путь - это НЕ:

  • Считать значение
  • если существует (используя собственный индекс массива или метод what-have-you), затем отправить его в массив

Должен ли я вставлять значение в алфавитном порядке для ускорения поиска / поиска?

ИЛИ мне хранить несколько массивов ... например, по одному на каждую букву алфавита?

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Использование Набор :

Set реализует коллекцию неупорядоченных значений без дубликатов. Это гибрид интуитивно понятных средств взаимодействия Array и быстрого поиска Hash.

Пример использования:

require 'set'

set = Set.new
set << 1 << 2 << 3  # => #<Set: {1, 2, 3}>
set << 2            # => #<Set: {1, 2, 3}>
2 голосов
/ 06 марта 2012

Вы можете добавить значения в качестве ключей к хэш-карте, которая будет автоматически удалять дубликаты. Вы даже можете посчитать, сколько раз каждое значение встречается таким образом (с помощью значения хеша).

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