【Java8】Stream API、Date And Time API ...初心者メモ


スキル云々と言っても、最もコーディング量の多いのは素のJava本文であり、ここでもたついているようでは生産性向上/品質確保は図れません。

1.Date and Time API

便利になった反面、非常に複雑になっています。頻繁に参照している記事はこちら。
「Java8の日時APIはとりあえずこれだけ覚えとけ」Qiita @tag1216さん
記事から抜粋)Builderパターンのような記述が可能で、記述性/可読性が向上しています。

現在時刻の来月1日の12時を求める.java
LocalDateTime d = 
       LocalDateTime.now()
                    .plusMonths(1)
                    .withDayOfMonth(1)
                    .withHour(12)
                    .truncatedTo(ChronoUnit.HOURS);

JavaDoc「パッケージjava.time」

2.ラムダとストリーム

新規プロジェクトでは、ストリームでの記述は必須です。こちらの記事は絵付きでの解説があり、直感的にわかりやすいです。下記の様な絵が出てきます。
「絵で理解するリスト処理 - java8 stream / javaslang」Qiita @suzuki-hogeさん

慣れたらこちらも。
「Java 8 Stream API にテキストを流してみる(生成編)」Qiita @kumazoさん
「Java 8 Stream API にテキストを流してみて(中間操作編)」Qiita @kumazoさん
「Java 8 Stream API にテキストを流してみた(終端操作編)」Qiita @kumazoさん
「Java 8のStream処理はここまで省略できる!」Qiita @munieru_jpさん
「Java8のラムダ式を理解する」Qiita @sano1202
JavaDoc「パッケージjava.util.stream」

3.Path/Paths/Files

File処理については、新旧のAPIが現時点でも混在して使用されており混乱するところです。Java7で導入された上記APIのみ絞った方が良いと感じています。
「Java NIO2のおさらいメモ」Qiita @rubytomato@githubさん
JavaDoc「インタフェース Path」「クラスPaths」「クラスFiles」

9.その他(Java初心者の備忘録)

(1) @Override は必要か?

・必須ではないが、記述を推奨する。
・引数の型違いなど使用ミスがあれば、Eclipseがミスを教えてくれる。
・オーバーライドしている事が明確になる。

(2) Temporal(Java8 Date and Time API)が分かりにくい

Java日付関連の実装中、APIのJavadocを調べていて困るのが、ちょいちょい引数にでてくるTemporalAccessorとかChronoLocalDateTimeです。結局、何を指定すれば良いのか分らず呆然ととしてしまう事があります。
※もう少し理解度が高くなったら追記します。