Java 8 是否有一个';机制';在Java8中将流操作值分配给局部变量?

Java 8 是否有一个';机制';在Java8中将流操作值分配给局部变量?,java-8,java-stream,criteria-api,Java 8,Java Stream,Criteria Api,我想答案是否定的,但我想检查一下周围没有优雅的作品。我想在Java8应用程序中向JPA criteriabQuery添加未知数量的子查询操作,并希望这样做 Expression where = null; where = criteriaBuilder.in(from.get(fieldsList.get(0)... ) fieldsList.stream().skip(1) .forEachOrdered(i -> where = criteriaBuilder .and(crite

我想答案是否定的,但我想检查一下周围没有优雅的作品。我想在Java8应用程序中向JPA criteriabQuery添加未知数量的子查询操作,并希望这样做

Expression where = null;

where = criteriaBuilder.in(from.get(fieldsList.get(0)... )

fieldsList.stream().skip(1)
.forEachOrdered(i -> where = criteriaBuilder
.and(criteriaBuilder.in(from.get(i)).value(getSubquery(edmEntityType,
entityClass, criteriaBuilder, criteriaQuery, from, i)), where));
因为我引用了许多locval变量,所以这是一个no no,我使用了for循环

for (int i = 1; i < fieldsList.size(); i++){
    where ... 
}
for(int i=1;i

我只是想知道是否有更优雅的解决方案?

fieldsList的元素类型是什么?
?看看reduce函数。@Eran fieldsList是一个列表。我不认为有一个好方法可以让forEach跳过第一个元素?将执行Niko.
Expression where=fieldsList.stream().map(i->criteriaBuilder.in(from.get(i)).value(getSubquery(edmentype,entityClass,criteriaBuilder,criteriaQuery,from,i)).reduce(criteriaBuilder::and.get()