ラムダは、あなたが無限のデータを表すことができ、同様に、ちょうど原則的にPythonのようなイテレータを達成yeild私たちは様々なプログラムで出会った、無名関数、名前から判断すると、ストリームという、これはストリームであることを信じて、少しだけ電話をかけるリアルタイムアウトと引き換えに計算することができ、メモリ、。
だから、ラムダの使用状況での外観は、これは前に実際に収集され、複数のスレッドで使用されてきましょう、そして今再び見て
インポートjava.util.Arraysは、 パブリック クラスのHelloWorld { 公共 静的 ボイドメイン(文字列[]引数)をスロー例外{ 文字列[] L = 新しい新しい文字列[] { "B"、 "A"、 "C"、 "P"を"E" }; // これはデフォルトであるソート は、Arrays.sort(L) のSystem.out.println(String.Join( ""、L)); // 、B、C、E、P / / このメソッドは、この関数が匿名(ある、我々のカスタム使用される) - > {}関数は、その唯一のラインである場合、括弧は省略することができ、リターン は、Arrays.sort(L、(文字列S1、S2文字列) - > { システム.out.println(「比較」)。 リターン- s1.compareTo(S2); }); は、Arrays.sort(L、(S1文字、文字列S2) - > - s1.compareTo(S2)); のSystem.out.println(String.Join( ""、L )); // P、E、C、Bは、 // 、同じパラメータ場合、戻り値は、同じ方法で参照され、あなたは、単にこの方法基準を使用することができる は、Arrays.sort(L、HelloWorldの::比較します) 。 System.out.println(String.Join( ""、L)); // A、B、C、E、P } 静的 INT 比較(ストリングS1、S2の文字列){ リターンs1.compareTo(S2); } }
次の需要がストリームの使用で、我々が直接受け入れるために、リストを使用する場合は、すべての自然数のリストを構築することができ、それは確かに現実的ではない、見てみましょう今がある場合、我々は、ストリームを見て
輸入java.nio.file.Files。 輸入java.nio.file.Paths。 輸入java.util.function.Supplier; 輸入java.util.stream.Stream; クラス NatureNum 実装サプライヤー<整数> { int型のn = 0 。 @Override パブリック整数のget(){ N ++ 。 返すのn; } } パブリック クラスのHelloWorld { 公共 静的 ボイドメイン(文字列[]引数)がスロー{例外 // 可以使用Stream.of创建对象 ストリームの<string> Stream.of S =( "A"、 "B"、 "C" ); s.forEach(のSystem.out ::のprintln); // ABC // 使用Stream.generate(サプライヤパラメータが達成インタフェース)データストリーム生成 ストリームを<整数> = L Stream.generate(新しい新しいNatureNum()); // フィルターろ過、限界サイクル数forEachの印刷実行のマップ池法 (l.filterをN - > N%2 == 0).MAP(N - > * N-2).limit(10).forEach(のSystem.out ::のprintln); // 4 8 12 20 16個の24 28 32 36 40であり、 // ファイルが劉用ファイルも使用することができます。ストリームラインが発生することができる 試みを(ストリームの<string> F = Files.lines(Paths.get( "./ SRC / t.txt" ))){ f.forEach(のSystem.out ::のprintln)。 // ハロー } } }