Удалить дубликаты данных в файле

У меня есть проблема с алгоритмом. Ребята, вы мне поможете?

У меня есть файл, который огромен и, следовательно, не может быть загружен сразу. Существуют повторяющиеся данные (общие данные, могут быть строки). Мне нужно удалить дубликаты.

4 ответа

Решение

Одно простое, но медленное решение читается как 1-й Гигабит в HashSet. Прочитайте последовательный остаток файла и удалите дублирующиеся строки, которые находятся в файле. Чем читать 2-й гигабайт в памяти (hashset) и удалять дубликаты в файлах и снова, и снова... Его довольно легко программировать, и если вы хотите сделать это только один раз, этого может быть достаточно.

Вы можете вычислить хеш для каждой записи и сохранить его на карте>

Прочитайте в файле, строящем карту, и, если вы обнаружите, что HashKey существует на карте, вы пытаетесь установить положение для двойной проверки (и, если не равно, добавьте местоположение в сопоставленный набор)

Второе решение:

  1. Создайте новый файл, в котором вы пишете пары
  2. Чем вы будете использовать классическую сортировку для больших файлов по String (Сортировка больших файлов = сортировка мелких частей файла в памяти, а затем объединение их вместе) - при этом вы удалите дубликаты
  3. А затем восстановить исходный порядок = вы будете сортировать снова, но в соответствии с "Положение в исходном файле"

В зависимости от того, как вход помещен в файл; если каждая строка может быть представлена ​​данными строки;

Другой способ - использовать сервер базы данных, вставить свои данные в таблицу базы данных с уникальным столбцом значений, прочитать из файла и вставить в базу данных. В конце база данных будет содержать все уникальные строки / строки.

Другие вопросы по тегам