I disagree with a detail here: functional tools are always to be preferred as they are in any case either equivalent to loops — or better. They are declarative by default, which means they result in a better alignment between the coder and the compiler.
people who argue that they aren't better because they think they can make loops run a little bit faster should probably pack their bags and head back to the 70ies or 80ies where those arguments where of valid concerns.
Today, while the addressable byte has tripped in size from 8 to 64: and the clock rate went from thousands of herz to billions: Do I really need to optimises (and insult) to crank out the last cycle? lets say I work on a reader app with a back catalog of 1000 books. Do I really need speed where I can sort those books over and over again one thousand times per second — or is 950 just as good?
or in other words: if you have a problem in your app it wont be because you use functional interfaces — and switching to loops wont help.