Доступ к файлам Java - вопросы производительности - PullRequest
1 голос
/ 27 сентября 2010

Все,

Учитывая мой предыдущий запрос Stackoverflow-Post , вот что я сейчас делаю.Это своего рода блок-схема:

1> Добавить запись в файл :
a.Получить детали для новой записи
б.Получить все записи из файла.
c.Сравните каждую полученную запись с новой записью.Если совпадение найдено, не добавляйте в файл, иначе добавьте новую запись.

2> Поиск записи в файле .
a.Получить данные для записи, которую нужно найти (здесь только номер кредитной карты.)
b.Получить все записи из файла.
c.Сравните каждую найденную запись с искомой.Если совпадение найдено, отобразите детали.

3> Удалить запись из файла .
a.Получить данные для записи, которая будет удалена (Здесь только номер кредитной карты.)
b.Получить все записи из файла.
c.Сравните каждую найденную запись с искомой.Если совпадение найдено, удалите запись из файла.

Как видно, я каждый раз выполняю операции ввода-вывода для операции.Можно ли как-нибудь оптимизировать или улучшить производительность моего кода?

API, который я использую для добавления записи, - FileWriter, для операции поиска - BufferedReader, а для удаления записи - BufferedReaderи PrintWriter

Ответы [ 2 ]

3 голосов
/ 27 сентября 2010

Использовать базу данных.

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

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

1 голос
/ 27 сентября 2010

Я бы также предложил вам использовать базу данных, но если вам нужно использовать файл, я могу предложить вариант: Сериализация Java . Создайте HashMap с ключом в качестве номера кредитной карты и остальной частьюинформация, обернутая в объект как значение. Каждый раз, когда добавляются новые записи, добавьте информацию в хэш-карту, сериализуйте данные и удалите старый файл. То же самое вы можете сделать для удаления записей и для поиска очень просто, так как информацияв хэш-карте все, что вам нужно сделать, это проверить, присутствует ли ключ или нет, и еще одним преимуществом является то, что вам не нужно беспокоиться о формате записи в файл, а затем снова анализировать его.

Есликоличество записей велико. Проблема, которая может возникнуть, вероятно, заключается в том, что вам нужно загрузить большой файл в память. Решение состоит в том, что вы можете поддерживать ограничение на количество записей в файле и вести поиск с помощью навигации.карта ( проверьте эту ссылку, например ). Диапазон номеров кредитных карт может бытьв определенном файле. Ключом для поиска может быть начальный диапазон кредитной карты, а значением - имя файла.

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