Вы как бы напичканы здесь.
Похоже, что вы поместили все объекты в список, а затем сохранили список в файл, используя один вызов writeObject
.
Если вы это сделаете, у вас нет никакого другого выбора, кроме как прочитать весь список. Я предполагаю, что вы могли бы реализовать хак (с помощью пользовательских методов чтения объектов или аналогичных), чтобы «прочитать» нежелательные DeviceInfo
объекты как null
, чтобы сэкономить место. Но это может иметь и обратные стороны.
Одним из решений является сериализация исходного списка путем индивидуальной сериализации элементов. Затем вы можете читать их по одному и игнорировать те, которые вам не нужны. Это неэффективно, но вы должны избегать заполнения кучи объектами, которые в данный момент не нужны.
Лучшим решением было бы использование другого метода сохранения данных:
Вы можете использовать СУБД, базу данных SQL или базу данных с плоскими файлами (например, BerkleyDB) и выбрать только те строки, которые хотите отобразить.
Вы можете использовать другой формат сериализации, такой как JSON, XML или CSV, который имеет потоковый API. Затем вы транслируете весь файл и создаете только те элементы, которые хотите отобразить.
База данных какого-либо типа предпочтительнее.