![](/img/trans.png)
[英]How to perform operations in forEach and pass it to groupingBy in Java streams
[英]Java 8 Streams. Pass Two arguments to a method called in forEach
使用 Java 8 流 API,我想要一种方法来调用接受两个参数的引用方法。 splitFileByMaxRows
是应该将String
和int
作为其参数的引用方法。 有什么方法可以实现吗?
private void breakLargeFileIntoChunks(final File setlFile, int parentFileId) {
LOG.info(LOG.isInfoEnabled() ? "*** Breaking Large File Into Chunks ***" : null);
try (Chunker chunker = new Chunker();
Stream<String> lines = Files.lines(Paths.get(setlFile.getAbsolutePath()))) {
lines.forEach(chunker::splitFileByMaxRows);
}
catch (IOException e) {
e.printStackTrace();
}
}
您无法使用方法引用,因为您无法将int
参数传递给它。
因此,请改用lambda表达式:
lines.forEach(s -> chunker.splitFileByMaxRows(s,someInt));
MethodReference 只能在允许使用 Consumer 的地方使用。 如果你记得一个消费者只接受一个输入参数。 因此,在您的情况下,您有两个参数,这是不可能作为方法引用传递给消费者的。 因此,您必须使用可以根据需要接受参数的 lambda。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.