Java 8 Stream debug

FacebooktwittertumblrFacebooktwittertumblr

 Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 8. 

В этой статье мы рассмотрим отладку(debug) Stream-ов в Java 8

1. Введение

Stream API  - новый способ взаимодействия с данными, представляя их в виде конечного потока данных.

Отладка Stream-ов на первый взгляд простая, поскольку у нас есть несколько методов, которые можно использовать для отладки кода, но не все они являются оптимальным выбором. Методы для отладки не должны изменять Stream каким либо образом. Про них мы сегодня и поговорим.

2. Debug stream with map

Stream API позволяет нам использовать метод map() для "подглядывания" за данными. Выглядеть это будет следующим образом

Где метод debug() объявлен как

И метод doSomeStaff()

который "что-то делает" с данными.

Такой подход рабочий, мы увидим в терминале последовательность от 1 до 5, при этом мы выполнили условие, мы не изменили Stream. Но все же подход не самый оптимальный, нам все же приходится возвращать данные в return

3.Debug stream with filter

Следующий кандидат - filter

Где метод debug() выглядит так

А метод doSomeStaff() все такой же полезный 🙂

Такой подход так же рабочий и последовательность появится в терминале. Но все же подход не оптимальный, мы можем попросту вместо true случайно вернуть false и таким образом завести себе новый баг.

4.Debug stream with peek

Последним кандидатом на роль метода для отладки есть peek(). Метод peek() принимает лямбда-выражение известное как потребитель (Consumer). Его задача просто принять входящий параметр, а вот возвращать значение уже не обязан.

Где метод debug()

Теперь стало возможным даже избавиться от метода debug() и использовать ссылку на метод

Использование метода peek() является лучшим вариантом для отладки Stream-ов, о чем так же говорится в документации метода peek() "@apiNote This method exists mainly to support debugging".

Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Детальную информацию Вы можете найти у нас на сайте.

 

FacebooktwittertumblrFacebooktwittertumblr

FacebooktwittertumblrFacebooktwittertumblr
Самоучители--узнать детальнее--