У меня есть параметр params - список, который содержит более 50000 элементов; Ограниченный бизнес-логикой, список должен быть менее 30000, так что у меня есть способ разделить этот массив на 2d-массив до логики
public static final <T> Collection<List<T>> partitionBasedOnSize(List<T> inputList, int size) {
AtomicInteger counter = new AtomicInteger(0);
return inputList.stream().collect(Collectors.groupingBy(s -> counter.getAndIncrement() / size)).values();
}
Это мое текущее решение:
public List<Account> getChildrenList(List<Long> ids) {
List<Account> childrenList = new ArrayList<>();
Collection<List<Long>> childrenId2dList = PartitionArray.partitionBasedOnSize(childrenIdsList, 30000);
for (List<Long> list : childrenId2dList) {
//this is my business logic: start
childrenList.addAll(accountRepository.getAccounts(list));
//this is my business logic: end
}
return childrenAccountsList;
}
Я хотел бы создать аннотацию поверх метода вместо многих дубликатов кода (каждый раз проверять и вызывать...)
Извините за мой плохой английский, я нарисовал диаграмму: метод называется> array array> бизнес-логика> собрать весь результат> return