将方法添加到Java 8 Stream

时间:2016-01-25 17:48:36

标签: java java-stream streamex

在使用Java 8 Stream时,我有时会发现Stream没有我想要的特定方法(例如takeWhile()dropWhile()skipLast())。如何创建自己的流类,其中包含其他方法,而无需重写整个Java 8 Stream体系结构?

我知道StreamEx库并知道它有takeWhile()dropWhile()。在写这篇文章时,它没有skipLast()。我已为此方法提交了an issue

可接受的解决方案是展示如何扩展Java 8 StreamStreamEx

1 个答案:

答案 0 :(得分:4)

由于版本0.5.4 StreamEx库具有chain()方法。这允许创建舒适插入的辅助方法。

public static <T> UnaryOperator<StreamEx<T>> skipLast(int n)
{
   return(stream -> skipLast(stream, n));
}

private static StreamEx<T> skipLast(Stream<T> input, int n)
{
   // implement the real logic of skipLast
}

有了上述内容,现在可以写...

StreamEx.
   of(input).
   chain(skipLast(10)).
   forEach(System.out::println);