Добавить метод в поток Java 8

Работая с Java 8 Stream s, я иногда обнаруживаю, что Stream не имеет конкретного метода, который мне нужен ( например, takeWhile(), dropWhile (), skipLast()). Как мне создать свой собственный класс потока, который имеет дополнительные методы без переписывания всей архитектуры Java 8 Stream?

Я знаю библиотеку StreamEx и знаю, что она имеет takeWhile() и dropWhile (). На момент написания этого, он не имеет skipLast(), Я подал проблему для этого метода.

Приемлемым решением было бы показать, как можно расширить Java 8 Stream или StreamEx.

1 ответ

Решение

Начиная с версии 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);
Другие вопросы по тегам