У меня был быстрый вопрос. Я работаю над школьным проектом, и мне нужно разобрать чрезвычайно большой текстовый файл. Это для класса базы данных, поэтому мне нужно получить уникальные имена актеров из файла, потому что актеры будут первичным ключом в базе данных mysql. Я уже написал парсер, и он отлично работает, но в то время я забыл удалить дубликаты. Итак, я решил, что самым простым способом было бы создание акролога. (Используя ArrayList ADT) Затем используйте метод contains(), чтобы проверить, находится ли имя актера в arraylist, прежде чем я его распечатаю в новый текстовый файл. Если это я ничего не делаю, если нет, я добавляю его в arraylist и печатаю на страницу. Теперь программа работает очень медленно. Перед арраистом это заняло около 5 минут. Старый файл актера был 180k без дубликатов удалены. Теперь он работает 30 минут и до 12k. (На этот раз я ожидаю 100k-150k).Java- Разбор большого текстового файла
Я оставил размер архиватора пустым, потому что я не знаю, сколько актеров в файле, но не менее 1-2 миллионов. Я думал о том, чтобы просто положить 5 миллионов за свой размер и проверить, не получилось ли после этого. (Просто проверьте последний индекс arraylist, и если он пуст, это не закончилось.) Это уменьшит время, потому что arraylist не будет постоянно увеличиваться и переписывать все? Есть ли другой способ, который будет быстрее этого? Я также обеспокоен тем, что у моего компьютера может закончиться память, прежде чем он завершится. Будем признательны любому совету.
(Также я попытался запустить уникальную команду в текстовом файле без успеха. Имена действующих лиц распечатывают 1 на строку. (В одном столбце) Я думал, что, возможно, команда была неправильной. Как бы вы удалили дубликаты из столбец текстового файла в командной строке windows или linux?) Спасибо и извините за длинный пост. Завтра у меня средний срок, и я начинаю напрягаться.
Используйте набор вместо списка. Содержания Set намного эффективнее и удаляют дубликаты. В эти дни вам нужно много GB, чтобы быть действительно большим. Я бы назвал туберкулез чрезвычайно большим, хотя даже это становится все более распространенным явлением. Если вы обеспокоены тем, что 5 миллионов слишком много, я предлагаю вам рассчитать, сколько памяти используется миллион, и оценить, сколько памяти вам понадобится. –
вы можете делать только «уникальные» элементы после сортировки, и если размер вашего файла меньше, чем у вас, вы должны сделать это через несколько минут (или секунды в зависимости от объема работы, которую вы делаете с этими данными) –
I У меня все еще есть повторяющаяся проблема, которая не имеет смысла. Так что программа настроена, чтобы сделать, это прочитать имя procuders, затем я использую manufacturer.add (productcername), чтобы добавить имя в HashSet. В самом конце программы перед ее завершением я использую итератор для печати набора в текстовый файл по одному за раз. Затем я пошел и попробовал загрузить его в базу данных, и он все еще говорит, что содержит повторяющиеся записи. Это должно быть невозможно. Размер файла с дубликатами составлял 50 тыс., После использования HashSet и печати в текстовый файл до 7k. Кажется, он работает. – Dan