LambdaとStreamの流れを取得する記事

1.ラムダ式

jdk8 の糖衣構文は、関数型プログラミングの重要な実施形態であるいくつかの匿名内部クラスの記述を最適化し、オブジェクトが何であるかにはもはや注意を払わず、データの操作をより重視します。

1. 練習する

演習 1

演習 2 

 

 

演習 3

 

 演習 4

 演習 5

2. 省略ルール

  • パラメータの型は省略可能
  • メソッド本体のコードが 1 行のみの場合、そのコード行の中かっこリターンとセミコロンは省略できます。
  • メソッドにパラメータがある場合は括弧を省略できます
  • 省略方法がわからない場合は、Alt+Enter を押してください。

2. ストリーム

関数型プログラミング モードは、その名前のように使用され、コレクションまたは配列に対してチェーン フロー操作を実行するために使用できます。これは、コレクションまたは配列を操作するのに便利です。

1. 入門ケース

コレクション内の18歳未満の作家の名前を印刷し、重複を削除するように注意してください

注:すべての中間メソッド呼び出しは、最終メソッドと分離できません。最終メソッドが呼び出されない場合、中間メソッドは実行されません。

2. オペレーションの作成

単一列コレクション: .stream() のみ

配列: Stream<Integer> stream = Arrays.stream(arr); もう 1 つの方法は、Stream クラスの of メソッドを使用して配列を渡し、ストリーム オブジェクトを取得することです。

ダブルカラムコレクション:マップを使用してentrySetメソッドを呼び出し、セットコレクションに変換します。セットコレクションにはエントリが格納され、エントリにはキーと値が含まれます。単一列コレクションに変換し、単一列コレクションのメソッドを呼び出します。

3. 中間操作

フィルター

ストリーム China 内の要素に対して条件付きフィルターを実行し、フィルター条件を満たす要素のみをストリームに保持できます。

例: 名前の長さが 1 より大きいすべてのライターの名前を出力します。 

地図

ストリーム内の要素は計算または変換できます

例: すべてのライター名を出力する

すべての作家の年齢を取得し、10 を足して印刷します

明確

ストリーム内の重複要素を削除できます

例: すべての作成者の名前を出力し、要素が重複しないように要求します。

注: distinct メソッドは、Object の equals メソッドに依存して同じオブジェクトかどうかを判断するため、equals メソッドの書き換えに注意する必要があります。

並べ替えられた

ストリーム内の要素はソート可能

たとえば、対流中国の要素は年齢に従って降順にソートされ、重複する要素がないことが要求されます。

空のパラメータを持つsortedメソッドが呼び出された場合、ストリーム内の要素は同等のインターフェイスを実装する必要があります。

匿名の内部クラスの形式で直接渡すことで、パラメーターをパラメーターとともに使用することもできます。

限界

ストリームの最大長を設定でき、超過分は破棄されます。

スキップ

ストリーム内の最初の n 要素をスキップし、残りの要素を返します。

例: 最年長の著者を除く他の著者を印刷し、要素の繰り返しを必要とせず、年齢の降順に並べ替えます。

フラットマップ

map はストリーム内の要素として 1 つのオブジェクトを別のオブジェクトに変換することしかできませんが、 flatMap はストリーム内の要素として 1 つのオブジェクトを複数のオブジェクトに変換できます。

例 1:著者は多くの本を執筆しており、すべての本の名前を印刷し、繰り返される要素の重複排除を必要としています。

flatMap は、オブジェクトを複数のオブジェクトに変換し、ストリームに入れるのに役立ちます。

例 1:既存のデータのすべてのカテゴリを出力します。カテゴリの重複を除去する必要がありますが、この形式は表示できません: 哲学、愛

2 番目の flatMap メソッドの分割は配列であり、配列をストリームに変換するには Arrays API を使用する必要があります。

4. 操作を終了する

それぞれに

ストリーム内の要素をトラバースし、パラメーターを渡すことで、トラバースされた要素の処理方法を指定します。

カウント

ストリーム内の要素の数を取得するために使用できます

例: 重複する要素を慎重に削除して、著者ごとのすべての書籍の番号を出力します。

最大値(&M)

ストリーム内の最大の値を取得するために使用できます

例: 著者の本の最高点と最低点を取得して印刷する

収集

現在のストリームをコレクションに変換します

任意の一致

フルマウス条件があるかどうか、ある場合は true を返し、すべての要素が満たされない場合は false を返す

すべて一致

すべてが一致するかどうかを判断し、true の場合は false を返します。

なし一致

一致するものがない場合は true を返し、一致する場合は false を返します

任意の検索

ストリーム内の適格な要素を取得します。このメソッドは、ストリーム内の最初の要素を取得する必要があることを保証できません。

オプションは、null ポインターの受信を防ぐためにこれを使用して返す jdk です。

最初に見つける

ストリーム内の最初の対象となる要素を取得します

減らす

ストリーム内のデータを変換し、指定した計算方法に従って結果を計算します(リダクション演算)

Reduce の機能はストリーム内の要素を結合することであり、初期値を渡すと、6 つの要素と初期値に基づいて計算方法に従って順番に計算され、計算結果は次のように計算されます。以下の要素。

5. 注意事項

遅延評価 (最終操作がない場合、中間操作は実行されません)

ストリームは使い捨て可能です (ストリーム オブジェクトがファイナライズ操作を受けると、ストリームは再度使用できなくなります)。

元のデータには影響しません (ストリーム内で複数のデータを処理でき、元のコレクション内のデータは通常影響を受けません)

おすすめ

転載: blog.csdn.net/weixin_54232666/article/details/130139765