I worked on a big Java project where we had to do a lot of list/collection wrangling like that. I found that code using combinator chain/list comprehensions/Streams/LINQ/etc. was significantly less error prone than code with hand-written loops. And that was in a team mostly staffed with junior engineers :)
I am not saying use it instead of loops, I am saying don't chain the filters/maps/whatever endlessly. Even if only for the sake of being able to add breakpoints like the other commenter said.