個人財務 Javaでストリームとラムダ式を使用する

Javaでストリームとラムダ式を使用する

ビデオ: 【day29】22 尚硅谷 Java语言高级 Stream的中间操作:映射 2024

ビデオ: 【day29】22 尚硅谷 Java语言高级 Stream的中间操作:映射 2024
Anonim

Javaは、ストリームとラムダ式を最適に使用するファンシーなメソッドを持っています。ストリームとラムダ式を使用すると、アセンブリ行を作成できます。アセンブリラインソリューションは、関数型プログラミングの概念を使用します。

組立ラインは、いくつかの方法で構成されています。各メソッドはデータを取り込み、何らかの方法でデータを変換し、その結果を次のメソッドに渡します。ここに組立ラインがあります。

<! - 1 - >

関数型プログラミングアセンブリライン。

各ボックスは、組立ラインに沿って変形される一連の原材料を表します。それぞれの矢印は、メソッド(または、比喩的に、組み立てライン上の作業者)を表します。

たとえば、2番目のボックスから3番目のボックスへの移行では、ワーカーメソッド( メソッド)は、DVDではないアイテムの売り出しを中断します。ルーシー・リカルドが第2と第3の箱の間に立って、各本やCDを組立ラインから取り出し、それを不注意に床に投げ込むと想像してください。 <! Javaの filter

メソッドへのパラメータは

Predicate - 結果が boolean のラムダ式です。 filter メソッドは、ラムダ式の true / false テストに合格しない項目を送り出します。 いくつかの関数型プログラミングメソッド メソッド名 メンバ

パラメータ(999)結果タイプ
結果値 ストリーム コレクション (たとえば、 ストリーム
ストリーム コレクション ストリーム ストリーム ストリーム ストリーム >ラムダ式が返す値を含む新しいストリーム true
map Stream 関数 Stream ラムダ式を入力ストリームに適用した結果を含む新しいストリーム Stream
Stream BinaryOperator BinaryOperator で使用される型入力ストリームのすべての値を結合した結果
<! 3番目のボックスから4番目のボックスへの遷移では、ワーカー・メソッド( map メソッド)は、 販売 。その従業員の場所から、組立ラインには99​​9の値 しか含まれていません。
より正確には、Javaの

マップ メソッドは (sale) - > saleなどの ファンクション を使用します。 getPrice() を呼び出し、 Function をストリームの各値に適用します。したがって、

マップ メソッドは、 セールス オブジェクトの受信ストリームを受け取り、 価格

値の発信ストリームを作成します。

4番目のボックスから5番目のボックスへの移行では、ワーカーメソッド( reduce メソッド)がDVDの販売価格を加算します。Javaの reduce メソッドは2つのパラメータをとります。 最初のパラメータは初期値です。 上記の画像では、初期値は 0です。 0 999である。 第2のパラメータは、

BinaryOperator である。 上記のイメージでは、 reduceメソッド BinaryOperator

(price1、price2) - > price1 + price2 メソッドを減らす

BinaryOperator を使用して、入力ストリームからの値を結合します。初期値は、すべての結合の開始点として機能します。したがって、 reduce

メソッドは2つの追加を行います。 reduceメソッドは、入力ストリームから2つの値を加算します。 比較のために、 3の値を含むストリームで reduce(10。0、(value1、value2) - > value1 * value2)

を呼び出すとします。 0 999、999。 0 999および999である。 0 999である。結果のアクションを以下に示します。

reduceメソッドは、入力ストリームからの値を乗算します。 あなたはGoogleのMapReduceプログラミングモデルについて聞いたことがあります。プログラミングモデルの名前とJavaメソッド名 map reduce の類似点は偶然ではありません。 全体として、組立全体が売れたDVDの価格を上回っています。上記のコードには、上の最初の画像であるストリームとラムダ式を使用する完全なプログラムが含まれています。

import java。テキスト。 NumberFormat;

import java。 util。配列リスト;

パブリッククラスTallySales {

public static void main(String [] args){ ArrayList sales = new ArrayList <>(); NumberFormat currency = NumberFormat。 getCurrencyInstance(); fillTheList(sales); 倍合計=売上。 stream() 。フィルタ((sale) - > sale。getItem()。equals( "DVD")) 。 map((sale) - > sale。getPrice())

。 reduce(0。0、(price1、price2) - > price1 + price2);

システム。でる。 println(通貨。書式(合計)); } 静的void fillTheList(ArrayList 販売){ 販売。追加する(新しい販売( "DVD"、15. 00));

売上高。追加する(新しい販売( "Book"、12. 00));

売上高。追加する(新しい販売(「DVD」、21. 00));

売上高。追加(新しい販売( "CD"、5. 25));

}

}

コードにはJava 8以降が必要です。 IDEが以前のJavaバージョン用に設定されている場合は、IDEの設定を変更する必要があります。新しいバージョンのJavaをダウンロードする必要があります。 太字は大きなJava割り当てステートメントの1つです。ステートメントの右側には一連のメソッド呼び出しが含まれています。各メソッド呼び出しはオブジェクトを返し、そのような各オブジェクトは次のメソッド呼び出しでドットの前にあるものです。そういうわけで、あなたは組立ラインを作ります。

たとえば、太字のコードの始まりの近くでは、

sales

という名前は

ArrayList

オブジェクトを参照します。各

ArrayList

オブジェクトには、

ストリーム

メソッドがあります。上のコードでは、 の売上高です。 stream()

は、その

ArrayList

オブジェクトの

ストリーム

メソッドへの呼び出しです。

streamメソッドはJavaの

Stream

クラスのインスタンスを返します。 (なんと驚き!)だから

の売上。 stream()999は、999のStreamオブジェクトを指す。 すべてのDVD販売を取得します。 すべての Stream オブジェクトには、 フィルタ メソッドがあります。だから の売上。ストリーム()。 ⁣Stream オブジェクトの フィルタ メソッドへの呼び出しです。 パターンが続きます。 ストリーム オブジェクトの

マップ メソッドは、さらに別の ストリーム オブジェクト - 価格を含む ストリーム オブジェクトを返します。 各DVD販売価格を取得する。

価格の

ストリーム には、 299 の値をとる reduce

メソッドを適用します。これはDVD価格の合計です。

すべてのDVD販売の合計価格を取得する。

Javaでストリームとラムダ式を使用する

エディタの選択

Drupalフォーラムの有効化 - ダミー

Drupalフォーラムの有効化 - ダミー

フォーラムはユーザーコミュニティを作成するのに最適です。人々は他者からの援助を得ることができ、あなたのコンテンツに関するフィードバックを提供し、単純に社会化することができます。あなたのDrupalフォーラムは、あなたが望むようにしっかりとまたはゆるやかに制御することができます。フォーラムで許可されているカテゴリを制御できます。フォーラムの例を見るには、Drupal Forumを参照してください。 ...

ドリューパルフレンドリーなウェブホスティング会社 - ダミー

ドリューパルフレンドリーなウェブホスティング会社 - ダミー

ウェブホスティング会社は、あなたがDrupalをインストールし、あなたのサイトをウェブ上に見えるようにするWebサーバー。一部の企業では、Drupalをインストールしたり、ワンクリックでインストールすることができます。あなたがDrupalのインストールをスキップする場合は、次のいずれかのアカウントを取得することを検討してください。

Drupalガーデンサイト構造管理 - ダミー

Drupalガーデンサイト構造管理 - ダミー

Drupal Garden Structureページでは、 、ページ、およびブロックを表示します。このページから制御できる特定の機能、ブロック、およびページには、連絡先フォーム、フォーラム、メーリングリストなどがあります。ブロックで表示される機能をブロックで管理することもできます。

エディタの選択

エグゼクティブとのデータマイニング - ダミー

エグゼクティブとのデータマイニング - ダミー

数字で遊ぶという楽しみのためにデータマイニングに取り掛からない。あなたは行動を望む。あなたは正しいことを見たいと思っています。データからの確かな証拠に基づいてビジネス上の決定を下すことが重要であることを理解しています。しかし、あなたは決定を下す権限を持つ人ではありません。だからあなたは...

ビッグデータガバナンスチャレンジ - ダミー

ビッグデータガバナンスチャレンジ - ダミー

データガバナンスは、大きなデータソースが彼らがどのように管理されているか。従来のデータウェアハウスやリレーショナルデータベース管理の世界では、データ保護の必要性に関するルールをよく理解している可能性があります。たとえば、医療界では、それは...

エディタの選択

エレクトロニクスコンポーネント:赤外線ライトダミーを作成する方法

エレクトロニクスコンポーネント:赤外線ライトダミーを作成する方法

赤外線を電気的に生成するには、赤外線スペクトルで動作する特殊な発光ダイオード(LED)を使用します。赤外線LED(しばしばIR LEDと呼ばれる)は、RadioShackまたは電子部品を販売する他の店で容易に入手できます。 IR LEDは、通常のLEDと似ていますが、光を見ることはできません。

デジタルエレクトロニクス:キット74のDOSコマンド - ダミーの

デジタルエレクトロニクス:キット74のDOSコマンド - ダミーの

を通して、あなたの電子プロジェクトを制御する場合パラレルポートであるKit 74 DOSソフトウェアは、コマンドプロンプトから実行できるRELAY、DELAY、WAITFORの3つのコマンドで構成されています。 RELAYコマンドRELAYコマンドは、1バイトのデータをパラレルポートに送信します。あなたから実行できること - RELAY、DELAY、およびWAITFOR - 8つの出力端子のそれぞれが...

デジタルエレクトロニクス:フリップフロップ回路の種類? - エレクトロニクスではダミー

デジタルエレクトロニクス:フリップフロップ回路の種類? - エレクトロニクスではダミー

、フリップフロップは特殊なタイプのゲートラッチ回路です。フリップフロップにはいくつかの異なるタイプがあります。フリップフロップの最も一般的なタイプは次のとおりです。SRフリップフロップ:SRラッチに似ています。 CLOCK入力に加えて、SRフリップフロップにはSETとRESETという2つの入力があります。 SET入力がHIGHの場合...