java8中的分区列表到子列表

mspsb9vt  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(301)

我想知道是否有一种很好的方法可以使用java 8来做这样的事情:

int amount = 1000;
int firstIndex = 0;
int lastIndex = firstIndex + amount;
List<int> projectIdsList;

while (lastIndex < projectIdsList.size()){
        doSomethingWhitSubList(projectIdsList.subList(firstIndex, lastIndex));
        firstIndex = lastIndex;
        lastIndex = firstIndex + amount;
}
doSomethingWhitSubList(projectIdsList.subList(firstIndex,  projectIdsList.size());
gj3fmq9x

gj3fmq9x1#

您可以使用intstream将列表划分为子列表,我不确定划分之后的意图,但是您可以使用collect将子列表收集到列表中

List<List<Integer>> subLists = IntStream.range(0,integers.size())
            .filter(i->i%amount == 0)
            .mapToObj(i->integers.subList(i,i+amount > integers.size() ? integers.size() : i+amount))
            .collect(Collectors.toList());

或者您也可以在分区之后对任何操作使用foreach

IntStream.range(0,integers.size())
            .filter(i->i%amount == 0)
            .mapToObj(i->integers.subList(i,i+amount > integers.size() ? integers.size() : i+amount))
            .forEach(this::doSomethingWhitSubList);

相关问题