Удалить дубликаты данных в файле - PullRequest
2 голосов
/ 22 мая 2011

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

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

Ответы [ 4 ]

2 голосов
/ 22 мая 2011

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

1 голос
/ 22 мая 2011

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

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

0 голосов
/ 22 мая 2011

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

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

0 голосов
/ 22 мая 2011

Второй раствор:

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