LoginSignup
0
1

More than 5 years have passed since last update.

Java8 Stream API 練習

Last updated at Posted at 2019-02-25

現場を離れて久しいのでJava8練習中。

Java6っぽいJava8を書くことは可能だし、プログラマーの最低レベルに合わせるとそうなってしまう現場も多々あることは承知の上だが、便利なものはどんどん取り入れて改善していくべきだという考えは今も変わりません。

クソコードを生み出してしまったので恥ずかしながら公開。

// テストデータをたくさん作りたい場合とかを想定してください。
// 悪い例
List<MyObject> objs = Stream.of(1, 2, 3, 4, 5).map(i -> {
    MyObject myObj = new MyObject();
    /* いろいろやる */
    return myObj;
}).collect(Collectors.toList());

// 良い例
// IntStream#range() だと5が出ないので注意
List<MyObject> objs = IntStream.rangeClosed(1, 5).mapToObj(i -> {
    MyObject myObj = new MyObject();
    /* いろいろやる */
    return myObj;
}).collect(Collectors.toList());

コレクションの変数名を複数形(-s, -es)にするのがマイブーム。xxxListみたいな命名にしちゃうとハンガリアンっぽくて気持ち悪いし、型がListじゃなくなる可能性だってあるよなって、かれこれ5年くらいずーっともやもやしていたところでした。

Perlみたいな書き方ができないものかな~と、かれこれ30分くらい試行錯誤していました。Stream#of()の引数を 1 .. 5 とか書いてみたけど、まあ動くわけがない。PerlじゃなくてJavaなんだから。

# 注:Perlみたいな書き方
my @array = (1 .. 5);

そういえばPerlってまだ現役のところあるんですかね?

ストラッツやめろキャンペーンと同時期にPerlアプリ廃止案件がどっさり来て結構てんやわんやでしたね。リプレースしたいけど設計書がない上に、リバースエンジニアリングできる技術者も滅多にいないんだそうで。

かくいう自分も、最近はちょっとしたことは全部Pythonにやらせていますが。Perl書く方が得意なんですが、インターネットから切り離された環境だとCPANが使えないのが不便で……

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1