Тема: Як очистити/перезапустити фільтр/стрім
Переписую/імплементую стандартний стрім, створюю свої фільтри та хочу після якогось з фільтрів та виводу елементів в консоль, пройтись ще раз по тим же елементам або по новим.
Вимоги : це моя "домашня робота" (робота(не ІТ) платила за курси, хоч вони і для початківців а я щось більше знаю, але як відомо "дареному коню.."), отже вимоги вільний/творчий підхід, креативність. Мені і раніше стріми подобались (модно/молодіжно) а тут така мотивація - як не використати старі знання?! Може хто підкаже або сам "маявся такою же.." головоломною/експериментом.
Пробував
System.out.println("TEST NOT DONE-> ");
reception.rooms().limit(15).forEach(System.out::println);
// цей стрім працює, показує 15 елементівб а нижній - лише 5
// далі після peek я ще фільтрів накидав і мені здалось що вони невірні, а ні, непрацє вже тут!
System.out.println("TEST NOT DONE-> ");
reception.rooms()
.limit(20) // HERE ARE A MISTAKE : limit = 5;
.peek(System.out::println)
А це в самому фільтрі
// PROBABLY HERE ARE MISTAKE
// why do we use findFirst()? because we need terminal operation and start new Stream
// and findFirst() map one to many elements, where flatMap it`s mapping each elment to many (namy-to-many) that not good.
public StreamOfRooms<T> clearFilter(StreamOfRooms<T> base) {
System.out.println("Inside Clear filter");
return new StreamOfRooms<>(this.findFirst().stream().flatMap(i -> base));
}
Ну і написав в commit на github що там не так. Дякую.