如何在流中使用返回void的函数?给定这个示例,其中读取包含字符串的文件并打印单词:
myFancyFile.lines()
.map(line -> line.split(" "))
.map(Arrays::asList)
.forEach(System.out::println);
如果我希望翻译单词,我会使用Collections.reverse()
,但我很难将其插入到流中。我知道我可以在Comparator
使用sorted()
,这只是一个例子。我想这样做的唯一方法是使用函数吗?
我真的不明白为什么这个问题应该是this的重复,这是一个关于方便地将消费者包装到函数中的完全不同的主题。
答案 0 :(得分:3)
使用lambda表达式而不是方法引用。
myFancyFile.lines()
.map(line -> line.split(" "))
.map(array -> {
List<String> list = Arrays.asList(array);
Collections.reverse(list);
return list;
})
.forEach(System.out::println);
答案 1 :(得分:1)
您可以使用peek
方法:
myFancyFile.lines()
.map(line -> line.split(" "))
.map(Arrays::asList)
.peek(Collections::reverse)
.forEach(System.out::println);