使用在Java 8流中返回void的函数

时间:2016-04-30 09:20:51

标签: java-8 return-value reverse java-stream void

如何在流中使用返回void的函数?给定这个示例,其中读取包含字符串的文件并打印单词:

myFancyFile.lines()
            .map(line -> line.split(" "))
            .map(Arrays::asList)
            .forEach(System.out::println);

如果我希望翻译单词,我会使用Collections.reverse(),但我很难将其插入到流中。我知道我可以在Comparator使用sorted(),这只是一个例子。我想这样做的唯一方法是使用函数吗?

我真的不明白为什么这个问题应该是this的重复,这是一个关于方便地将消费者包装到函数中的完全不同的主题。

2 个答案:

答案 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);