Хранение значений массива в отдельном файле при изменении значений массива - PullRequest
3 голосов
/ 16 октября 2019

Итак, я запускаю некоторый код, который выполняется более 300 000 раз. Каждый раз, когда этот код выполняется, он возвращает до 300 тыс. Значений. В настоящее время я сохраняю результаты, полученные в ArrayList:

List<List<Object>> thisList = new ArrayList<List<Object>();
for (int i = 0; i < 300000; i++) {
    thisList.add(new ArrayList<Object>());
}

for (int i = 0; i < 300000; i++) {
    List<Object> result = someCode();
    for (Object obj : result) {
        thisList.get(obj.id).add(obj.value);
    }
}

. В этом коде каждый раз, когда получается obj, он имеет значение obj.id, которое указывает index в List где obj.value должно быть сохранено.

Каков наиболее эффективный способ хранения результатов в другом месте при продолжении поиска? Кажется, мой код перестает работать после итерации 400, скорее всего из-за проблем с памятью. Я рассмотрел использование простого текстового документа, где каждая строка представляет List<Object>, но с помощью некоторого поиска в Google кажется, что нет никакого способа добавить к определенной строке, и все предложения указывают на перезапись всего текстового документа. Я никогда раньше не работал с базами данных, поэтому сейчас я стараюсь избегать этого.

Буду признателен, если кто-нибудь даст мне советы о том, что я могу сделать.

Редактировать: существует ли метод, который не использует базу данных, где после каждой итерации внешнего for loop данные могут храниться? Например, если указан файл, который в данный момент содержит

List 0: obj.value1 obj.value2
List 1: obj.value1 obj.value4
...
List 300000: obj.value3 obj.value8

, а результат содержит

{obj<1, 100>, obj<0, 3>, ...}

, где каждый объект имеет форму obj<id, value>, файл становится

List 0: obj.value1 obj.value2 obj.value3
List 1: obj.value1 obj.value4 obj.value100
...
List 300000: obj.value3 obj.value8

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете сохранить его в XML-файле, используя API JAXB. Вот ссылка с небольшим руководством по JAXB: https://dzone.com/articles/using-jaxb-for-xml-with-java

Или вы также можете сохранить его в файле JSON, используя json-simple api. еще один небольшой учебник: https://stackabuse.com/reading-and-writing-json-in-java/

Это ссылки для загрузки JAXB и json-simple с maven: JAXB: https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api json-simple: https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple

НадеюсьВам будет полезен

...