今日も「JDK8 Lambda その他いろいろ なんでもいいから動かしてみる」シリーズで GO! GO! GO! だぜぇ~
ワイルドだろぅ(もう古い)
今回は、売買価格によるソートをします。
これは今までの知識を使えば簡単に実装可能です。
ということでサラッと流しましょう。(^_^;
では、プログラムのコードは下記のよになります。
| mylambdaexamples\MyLambdaExamples.java |
// 売買価格によるソート
System.out.println("\n<-- 売買価格によるソート -->");
Comparator byCost = comparing((ToDoubleFunction) Sale::getCost);
sales.sorted(byCost)
.collect(toList())
.forEach(s -> {System.out.println((int)s.getCost()
+ " : " + s.wristwatch.getBrand()
+ " : " + s.wristwatch.getModel()
+ " "
+ s.seller.getFirstName() + " "
+ s.seller.getLastName()
+ " -----> "
+ s.buyer.getFirstName() + " "
+ s.buyer.getLastName());});
とてもシンプルなコードですっきりしてますね。
購入価格をソートして、それをベースに sales ストリームをソートするのに sorted() メソッドの引数に渡し、リストを collect(toList) メソッドで再構築して forEach() メソッドで表示させる。
まるで春の小川のように綺麗です。
それでは実行結果を確認します。
<– 売買価格によるソート –>
200000 : カルティエ : マストタンク 北川 景子 —–> 深田 恭子
250000 : カルティエ : マストタンク 綾瀬 はるか —–> 北川 景子
300000 : オメガ : ダイナミックデビル 小栗 旬 —–> 堀北 真希
300000 : ロレックス : プレシジョン 綾瀬 はるか —–> 深田 恭子
300000 : オメガ : ダイナミックデビル 綾瀬 はるか —–> 武井 咲
330000 : チュードル : カメレオン 剛力 彩芽 —–> 佐々木 希
400000 : ロレックス : プレシジョン 壇 蜜 —–> 柴田 恭平
400000 : チュードル : カメレオン 深田 恭子 —–> 綾瀬 はるか
800000 : ティファニー : ポーセリン 綾瀬 はるか —–> 深田 恭子
900000 : ティファニー : ポーセリン 武井 咲 —–> 深田 恭子
1000000 : ティファニー : ポーセリン 市原 隼人 —–> 深田 恭子
ちゃんとソートされてますね。(*^▽^*)
でも 300000 円の同じ価格のソートの順番はどうなってるん?
ちょっと気になるけど今はきにしない。(ヲヒ
それって解らないって翻訳すればいいんだろ!
たぶん、sales (LinkedHashSet) に追加された順番かな。
今日は簡単でしたね!
それではお約束事項を
この「JDK8 Lambda その他いろいろ なんでもいいから動かしてみる」シリーズはインターネット上で得た情報を元にそれを少し変更しているだけです。
悲しいことにその情報源は英語なので詳しい内容はわかりません。
よって私の推測で解釈された内容となってますので間違いがあると思います。
Java8 もまだ build83 を使用していますので API の変更により記述方法が変わるかもしれません。
早く正式リリースされて日本語でこの超便利で素敵な新機能を勉強したい今日この頃です。