Javaの関数型プログラミングに適したライブラリはありますか?
Predicate および List.Find() (静的メソッドとして)のようなものを探しています。実装するのは複雑ではありませんが、ここで再利用可能なライブラリを見つけるといいでしょう。
FunctionalJava は最も有名なライブラリです。たとえば、Javaクロージャ( [〜#〜] bgga [〜#〜] )を使用します。
final Array<Integer> a = array(1, 2, 3);
final Array<Integer> b = a.map({int i => i + 42});
arrayShow(intShow).println(b); // {43,44,45}
[〜#〜] edit [〜#〜]
lambdaj も確認してください。
さらに編集する
BGGAは完全にオプションです。より良い構文になります。
Scala は、Javaと完全に互換性のある関数型プログラミング言語です。 =(JVMを介して実行)。オブジェクト指向と機能のテクニックの美しいミックスと、Java Generics and Concurrencyの多くの改良点を提供します。 Javaを置き換える可能性があります。
すでにあなたのために脚注を行い、不可解なものを隠すことによって、これを行うのを助けることができるライブラリがあります:
これらにより、FP対応言語に期待されるように、より機能的なアプローチと、おそらくより馴染みのある構文とセマンティクスを使用してJavaコードを記述できます。
そして、明らかに、Javaの上に関数型言語をimplementationできます。これをFP言語として使用できます。これは、あなたが要求したものよりも少し高いレベルの抽象化ですが、比較的コンテキスト内です(ただし、ここに少し、付与されます)。
たとえば、チェックアウト:
次の記事やビデオを読んだり見たりすることもできます。
自分の P.SE からの回答 " Javaで関数型プログラミングは可能ですか? "
Googleコレクション には、機能的なプログラミングスタイルのユーティリティメソッドが豊富に用意されています。興味のあるクラスには、イテラブル、イテレータ、関数、関数などがあります
また、コレクションクラスも多数あります。
Functional Java は一見の価値があり、 FunctionalJ はもう1つです。
純粋なJavaソリューションが必要な場合はlambdajをチェックしてください。
http://code.google.com/p/lambdaj/
DSLスタイルでクロージャーを定義して使用する可能性に加えて、クロージャーやループを明示的に記述することなく、機能的な方法でコレクションを操作することもできます。
または、OpenJDK 8をダウンロードして、Lambda式をJava 8になるように試してください。特に、コレクションAPIは機能的なスタイルをサポートするように調整されています。 http://macgyverdev.blogspot.se/2012/10/functional-programming-in-Java.html 新しいコレクションAPIの例とGuava、LambdaJ、FunctionalJavaとの比較。
Apache Commonsには、機能的なコードがいくつかあります。たとえば、 Predicate インターフェイスを参照してください。
Google Guava 機能があります:
ここでScalaについて言及しましたが、もっと軽くてもっとたくさんありますJava互換性のある言語: Xtend 。それはコンパイルして平野Java同じ型システム。Eclipseの優れたサポートがあります。.Java
および.xtend
ファイルを1つのプロジェクトに。
サンプルコード:
def static void main(String[] args) {
val s = #[1,2,3].map[it+43].join(", ")
println(s);
}
Functional Javaが最も一般的ですが、Google guava libを試してみることをお勧めします。