Мне нужно получить список всех членов, возвращаемых публикуемым c API.
Проблема в том, что я не знаю никаких идентификаторов, но я знаю, что первый идентификатор начинается после 500000000, а последний один около 570000000. После проверки я знаю, что эти идентификаторы генерируются с отметкой времени, но у меня нет никакой другой информации.
Так что мое единственное решение - это получить их самостоятельно.
Я написал это:
private List<List<Long>> getFinalList() {
return chunkArrayList(getInitList(), 100);
}
private List<Long> getInitList() {
List<Long> idList = new ArrayList<>();
for (long i = 500000000L; i < 570000000L; i++) {
idList.add(i);
}
return idList;
}
private List<List<Long>> chunkArrayList(List<Long> listToChunk, int chunkSize) {
AtomicInteger counter = new AtomicInteger();
return new ArrayList<>(listToChunk.stream().collect(Collectors.groupingBy(l -> counter.getAndIncrement() / chunkSize)).values());
}
Примечание: я должен разделить свой список на более мелкие, чтобы разделить их на несколько вызовов API.
Моя главная проблема заключается в том, что этот код возвращает мне Out из памяти исключение, которое является нестабильным.
Как я могу сделать такой процесс, будучи максимально эффективным и избежать этих проблем с памятью?