Я пишу приложение, которое читает большое количество основных пользовательских данных в следующем формате; прочитав его, пользователь сможет искать его данные по электронной почте:
NAME ROLE EMAIL
---------------------------------------------------
Joe Bloggs Manager jbm@company.com
John Smith Consultant jsc@company.com
Alan Wright Tester awt@company.com
...
Проблема, которую я испытываю, заключается в том, что мне нужно хранить большое количество данных обо всех людях, которые работали в компании. Файл, содержащий эти данные, будет составляться на ежегодной основе просто для целей составления отчетов, но программе потребуется быстрый доступ к этим данным.
Способ, которым я стремлюсь получить доступ к этим файлам, состоит в том, чтобы иметь программу, которая запрашивает у пользователя имя уникального электронного адреса сотрудника, и чтобы программа затем возвращала имя и роль из этой строки файла. , Я поигрался с текстовыми файлами, но я борюсь с тем, как бы я обработал несколько столбцов данных, когда дело доходит до поиска этого большого файла.
В каком формате лучше хранить такие данные? Текстовый файл? XML? Размер меня не беспокоит, но я бы хотел найти его как можно быстрее. Файл должен содержать много записей, вероятно, со временем более 10 КБ.
РЕДАКТИРОВАТЬ: Я решил пойти с методом сериализации XML. Мне удалось заставить код для кодирования работать отлично, но код декодирования ниже не работает.
XMLDecoder d = new XMLDecoder(
new BufferedInputStream(new FileInputStream("data.xml")));
List<Employee> list = (List<Employee>) d.readObject();
d.close();
for(Employee x : list) {
if(x.getEmail().equals(userInput)) {
// do stuff
}
}
Когда программа нажимает List<Employee> list = (List<Employee>) d.readObject();
, генерируется исключение, утверждающее, что «Сотрудник не может быть приведен к java.util.List». Я добавил к этому вознаграждение, и любой, кто может помочь мне решить эту проблему раз и навсегда, получит много приятных очков.
РЕДАКТИРОВАТЬ 2: Я немного больше посмотрел на проблему и наткнулся на Сериализация в качестве потенциального ответа. Если бы кто-нибудь мог посмотреть на это для меня, поскольку у меня нет опыта в сериализации или десериализации, я был бы очень благодарен. Он может предоставить объект без проблем, но мне действительно нужно вернуть его в том же формате, в котором он был (Список).
РЕДАКТИРОВАТЬ 3: Тьфу, эта проблема действительно начинает сводить меня с ума и, честно говоря, я начинаю думать, что это неразрешимая проблема. Если возможно, может кто-нибудь взглянуть на код и помочь мне найти решение?