Guavaの目標は、Javaで機能的なイディオムを提供することではありません。機能的に説明されたGuavawikiページから:
Guavaの関数型プログラミングイディオムを過度に使用すると、冗長で、混乱を招き、読みにくく、非効率的なコードになる可能性があります。これらはGuavaの最も簡単に(そして最も一般的に)悪用される部分であり、コードを「ワンライナー」にするために途方もない長さに行くと、Guavaチームは泣きます。
Guavaの機能ユーティリティを使用するときは、従来の命令型の方法が読みやすくないことを確認してください。書き出してみてください。そんなに悪かったですか?それは、あなたが試みようとしていた途方もなく厄介な機能的アプローチよりも読みやすかったですか?
機能的なイディオムに過度に傾くことは、オーバーヘッドが高すぎるため、Java 7まではあまり意味がありません(垂直方向の問題を参照)。これはJava8で変更され、Javaライブラリとプログラムの詳細レベルでの設計方法が変更されます。7までのJavaで意味のあることは、Java 8ではある程度推奨されません。これにより、EffectiveJavaの新しいエディションと多くの新しいAPIが動機付けられます。
関数型プログラミングを教えようとしているのであれば、(多かれ少なかれ)純粋な関数型言語に固執する方がおそらく良いでしょう。FPとOOPのメランジ(またはエミュレーション)であるすべての言語は気を散らすものになります。