Удалить дубликаты данных в файле
У меня есть проблема с алгоритмом. Ребята, вы мне поможете?
У меня есть файл, который огромен и, следовательно, не может быть загружен сразу. Существуют повторяющиеся данные (общие данные, могут быть строки). Мне нужно удалить дубликаты.
4 ответа
Одно простое, но медленное решение читается как 1-й Гигабит в HashSet. Прочитайте последовательный остаток файла и удалите дублирующиеся строки, которые находятся в файле. Чем читать 2-й гигабайт в памяти (hashset) и удалять дубликаты в файлах и снова, и снова... Его довольно легко программировать, и если вы хотите сделать это только один раз, этого может быть достаточно.
Вы можете вычислить хеш для каждой записи и сохранить его на карте>
Прочитайте в файле, строящем карту, и, если вы обнаружите, что HashKey существует на карте, вы пытаетесь установить положение для двойной проверки (и, если не равно, добавьте местоположение в сопоставленный набор)
Второе решение:
- Создайте новый файл, в котором вы пишете пары
- Чем вы будете использовать классическую сортировку для больших файлов по String (Сортировка больших файлов = сортировка мелких частей файла в памяти, а затем объединение их вместе) - при этом вы удалите дубликаты
- А затем восстановить исходный порядок = вы будете сортировать снова, но в соответствии с "Положение в исходном файле"
В зависимости от того, как вход помещен в файл; если каждая строка может быть представлена данными строки;
Другой способ - использовать сервер базы данных, вставить свои данные в таблицу базы данных с уникальным столбцом значений, прочитать из файла и вставить в базу данных. В конце база данных будет содержать все уникальные строки / строки.