会社でJava初心者向けに勉強会が開催され、StreamAPIとOptinalについて学習したので記事にしました。
Stream API
Stream APIはコレクションの要素に対する一連の操作を効率的かつ簡潔に行うためのAPIです。以下のような特徴があります。
- ラムダ式と関数型インターフェイス: Stream APIはラムダ式と関数型インターフェイスを活用しています。
- 中間操作と終端操作: Streamの操作は、中間操作(変換やフィルタリングを行う)と終端操作(結果を生成する)の2種類があります。
- パイプライン処理: Streamの操作はパイプラインとして連続して適用することができます。
以下は、Stream APIを使用した簡単なコード例です。
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<String> list = Arrays.asList("Apple", "Banana", "Cherry", "Date", "Elderberry");
list.stream() // Streamの生成
.filter(s -> s.length() > 5) // 中間操作: 文字数が5より大きい要素をフィルタリング
.map(String::toUpperCase) // 中間操作: 文字列を大文字に変換
.forEach(System.out::println); // 終端操作: 各要素を出力
}
}
Optional
Optionalクラスは、NULLを返す可能性のあるメソッドが、代わりにOptional
インスタンスを返すように設計されています。これにより、NULLポインタ例外を防ぐことができます。
以下は、Optional
クラスの基本的な使用法のいくつかです。
- ofNullable: NULLかもしれない値をラップします。
- ifPresent: 値が存在する場合に実行するアクションを指定します。
- orElse: 値が存在しない場合に返されるデフォルト値を指定します。
- map: 値が存在する場合に適用される関数を指定します。
以下は、Optional
の基本的な使用法の例です。
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optional = Optional.ofNullable("Hello, World!");
optional.ifPresent(System.out::println); // 値が存在するため、"Hello, World!"を出力
String value = optional.orElse("Default value"); // 値が存在するため、"Hello, World!"を返します
System.out.println(value);
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresent(System.out::println); // 値が存在しないため、何も出力されません
String defaultValue = emptyOptional.orElse("Default value"); // 値が存在しないため、"Default value"を返します
System.out.println(defaultValue);
}
}