Какой наиболее эффективный способ загрузить данные из файла в коллекцию по требованию?

StackOverflow https://stackoverflow.com/questions/2434971

Вопрос

Я работаю над java-проектом, который позволит пользователям анализировать несколько файлов с потенциально тысячами строк.Проанализированная информация будет сохранена в различных объектах, которые затем будут добавлены в коллекцию.

Поскольку графический интерфейс не требует загружать ВСЕ эти объекты сразу и сохранять их в памяти, я ищу эффективный способ загрузки / выгрузки данных из файлов, чтобы данные загружались в коллекцию только по запросу пользователя.

Прямо сейчас я просто оцениваю варианты.Я также думал о случае, когда после загрузки подмножества данных в коллекцию и представления его в графическом интерфейсе, лучший способ перезагрузить ранее наблюдавшиеся данные.Повторно запустить анализатор / Заполнить коллекцию / Заполнить графический интерфейс пользователя?или, возможно, найти способ сохранить коллекцию в памяти или сериализовать / десериализовать саму коллекцию?

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

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

Знаете ли вы, каковы общие рекомендации по выполнению такого рода задач?Я хотел бы услышать, что вы делали с подобными сценариями.

При необходимости я могу предоставить более подробную информацию.

Это было полезно?

Решение

Вы можете встроить базу данных в приложение, например HSQLDB.Таким образом, вы анализируете файлы в первый раз, а затем используете SQL для выполнения простых и сложных запросов.

HSQLDB (база данных HyperSQL) - ведущий движок реляционных баз данных SQL написан на Java.Он оснащен драйвером JDBC и поддерживает почти полностью ANSI-92 SQL (формат дерева BNF) плюс множество улучшений SQL: 2008 . Он предлагает небольшой и быстрый компонент Database Engine, который предлагает таблицы в памяти и на диске, а также поддерживает встроенный и серверный режимы.Кроме того, он включает в себя такие инструменты, как средство SQL командной строки и графический интерфейс инструменты запросов.

Другие советы

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

Это было бы простым решением.Я уверен, что вы можете найти библиотеку, которая предоставит вам больше возможностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top