ストリームの最初の経験
ストリームは、Java 8の操作コレクションの重要な機能です。まず、Javaでストリームがどのように定義されているかを見てみましょう。
「シーケンシャルとパラレルの集計操作をサポートする一連の要素。」
上記の文を解釈しましょう。
1。ストリームは要素のコレクションであり、ストリームをイテレータのように見せます。
2.元のストリームを順番と並列で集約する操作をサポートできます。
ストリームを作成するには多くの方法があり、最も一般的なものに加えてコレクションを作成する他のいくつかの方法があります。
ストリーミングするリスト
リストはコレクションインターフェイスから継承され、コレクションはStream()メソッドを提供します。
List <Integer> list = lists.newarrayList(1、2、3); stream <integer> stream = list.stream();
ストリーミングする配列
配列の場合、配列はStream()メソッドを提供します。
string [] arr = new String [] {"a"、 "b"、 "c"}; stream <string> stream = arrays.stream(arr);ストリーミングするためのマップ
マップはシーケンスではなく、コレクションではなく、ストリーム()に直接変換する方法はありません。ただし、EntrySet()が設定されており、変換できます。
map <string、object> map = maps.newhashmap(); stream <entry <string、object >> stream = map.entryset()。stream();
ストリームを直接作成します
Streamはまた、APIを提供してストリームを直接生成します。これは、リストとして大まかに理解できます。内部が配列によって実装されるため。
stream <integer> integerstream = stream.of(1、2、3);
ファイルのストリームをお読みください
Linuxを使用した人は、コマンドラインのパイプシンボルを賞賛し、パイプシンボルを連続的に処理できます。 Javaでファイルを読み取るときに、同様の関数を実装できます。
long uniquewords = 0; try(stream <string> lines = files.lines(paths.get( "data.txt")、charset.defaultcharset()){uniquewords = lines.flatmap(l-> arrays.stream(l.split( ")))).distinct().distinct();関数を通る無限のフローを生成します
ストリームは、初期値に基づいた無限シーケンスである無限シーケンスを生成するために繰り返しを提供します。 Lambdaを使用して、毎回2を追加するなど、シーケンス生成ルールを設定できます。
stream.iterate(0、n - > n + 2).limit(10).foreach(system.out :: println);
たとえば、フィボナッチ配列
stream.iterate(new int [] {0、1}、t-> new int [] {t [1]、t [0] + t [1]}).limit(20).map(t-> t [0]).foreach(system.out :: println);ストリームは、シーケンスを生成する別の生成方法も提供します。ユーザー指定の生成されたシーケンス関数intsupplierを受信します。
intsupplier fib = new intsupplier(){private int fortion = 0; private int current = 1; @Override public int getasint(){int oldprevious = this.previous; int nextvalue = this.previous + this.current; this.previous = this.current; this.current = nextValue;老人を返します。 }}; intstream.generate(fib).limit(10).foreach(system.out :: println);要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。