関ジャバのGSCollectionsハンズオンに行ってきました。

GS Collectionsとは

ゴールドマンサックスが開発したオープンソースのコレクションフレームワーク。
Github: https://github.com/goldmansachs/gs-collections
Mavenリポジトリ: http://mvnrepository.com/artifact/com.goldmansachs/gs-collections/6.2.0

ハンズオンの内容

GSCollectionsKataをクローンして、落ちているユニットテストを通していくって感じの内容でした。
興味があるならこれから始めるのが良いかもしれません。

GSCollectionsを使った感想

StreamAPIと比べて多くのメソッドが提供されていて使いやすい!けど、APIが大きいのでチーム開発で使うには他の人を巻き込むのに苦労しそうだとは思った。
懇親会のLTでやっていたFunctions.throwing()で例外を投げるラムダを書けるのが良い感じ。

customer.getName()がExceptionをthrowsしている時、ラムダで書くとこんなかんじになって腹立つけど。

customers.collect(customer -> {
            //ピャアアアアアアアアアアア
            try {
                return customer.getName();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            
        });

Functions.throwingを使えば楽に書ける

customers.collect(Functions.throwing(Customer::getName));

こんなかんじでかなり嬉しい便利メソッドがあったりする。

不満点としてはnullかもしれない戻り値でOptionalが使われていないって所。
これが結構もやもやする。detectという条件に一致するものを検索して最初に見つかった要素を返す操作があるんだけど、こういうのがOptionalで返ってくると嬉しいなーと思った。

そういった要望とか不満点はStackOverflowに投げてくれとのことでした。日本語版でも質問の答えは返ってこないかもしれないけど、書いていれば対応する流れができるかもらしいです。

おしまい