我有一个存储库,它通过idList / nameList获得帐户,通过childId获得子帐户,诸如此类。
请求参数/返回结果列表通常大于32768
我有一个快速解决方案,它是在查询之前将arraylist转换为2d arraylist。
Collection<List<Long>> childrenId2dList = PartitionArray.partitionBasedOnSize(childrenIdsList, 30000);
if (childrenId2dList != null && childrenId2dList.size() > 0) {
for (List<Long> list : childrenId2dList) {
childrenAccountsList.addAll(accountRepository.getAccounts(list));
}
public static <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();
}
我认为这是一个愚蠢且重复的代码。
请问有没有比当前解决方案更好的解决方案?