我在Java中使用stream reduce,我写了以下代码:
ArrayList<CacheElement>[] initialArrayList = initArrayWithArrayList(newCacheCapacity);
Arrays.stream(cache).reduce(initialArrayList, (acc, cacheChainingList) -> {
cacheChainingList.forEach(cacheElement -> {
int index = calcIndexByKey(cacheElement.getKey(), newCacheCapacity);
acc[index].add(cacheElement);
});
return acc; // return the updated accumulator
});
我的编译器将我的累加器(acc)引用为Arraylist类型,而不是原始数组。我希望它将acc识别为ArrayList[]类型。请帮我弄清楚:)
我试图访问acc作为数组,但得到一个编译错误:
应为数组类型;发现:'java.util.ArrayList<org.example.myCacheService.cache.CacheRepository.CacheElement>'
1条答案
按热度按时间ikfrs5lh1#
这里使用的reduce方法签名如下:
T是您正在流的类型,在本例中,ArraysList,因为我相信缓存是一个ArrayList数组。
因此,在定义BinaryOperator的lambda语句中:(acc,cacheChainingList)-〉{...},
acc的类型为T,即ArrayList