Java8中的分区列表到子列表

Java8中的分区列表到子列表,java,list,java-8,Java,List,Java 8,我想知道是否有一种很好的方法可以使用Java 8来做这样的事情: int amount = 1000; int firstIndex = 0; int lastIndex = firstIndex + amount; List<int> projectIdsList; while (lastIndex < projectIdsList.size()){ doSomethingWhitSubList(projectIdsList.subList(firstInd

我想知道是否有一种很好的方法可以使用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());
int金额=1000;
int firstIndex=0;
int lastIndex=firstIndex+金额;
列表投射列表;
while(lastIndex
您可以使用将列表划分为子列表,我不确定划分后您的意图,但您可以使用将子列表收集到列表中


什么是
countOfBulk
?在此期间和之后,您在查找哪个子列表?您确定不使用同一索引两次吗?我错误地编辑了countOfBulk并将其更改为amount。函数“doSomethingHitsublist”获取列表作为参数并将其插入数据库,以避免在同一查询中插入许多项…谢谢。您的代码实际上在做什么?对
doSomethingHitsubList的相关调用是什么…
这里?我想向OP展示如何使用java-8从列表创建子列表,我同意这样一个问题,即输出不太清楚分区@Namansorry后需要,如果我可以添加一些内容,而不是迭代整个整数流,请根据需要的段数计算/segmentSize+1然后在创建IntStream时使用
segmentsCount
。这将略微增加计算量,但如果使用
Math.min
计算子列表的结尾,则iotal执行时间也会快得多。它将更具可读性
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());
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);