JavaのStream APIはコレクションや配列などのデータを処理するための便利なメソッドを提供しています。その中で、Optionalは値が存在するかどうか不確かな場合に使用されるクラスです。では、Stream APIとOptionalを組み合わせてどのように利用できるでしょうか?

フィルタリングと値の取得

List<String> words = Arrays.asList("apple", "banana", "cherry");

Optional<String> firstWordStartingWithB = words.stream()
        .filter(word -> word.startsWith("b"))
        .findFirst();

String result = firstWordStartingWithB.orElse("No word found");

System.out.println(result);

この例では、リストから”B”で始まる最初の単語を見つけています。もし見つからない場合は、デフォルト値として”No word found”を使っています。

マッピングと変換

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

String concatenatedNames = names.stream()
        .reduce((name1, name2) -> name1 + ", " + name2)
        .orElse("No names found");

System.out.println(concatenatedNames);

この例では、リストの名前をカンマで区切った1つの文字列に変換しています。もし名前が一つもない場合は、デフォルト値として”No names found”を使っています。

条件に基づく処理

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

int sum = numbers.stream()
        .filter(number -> number % 2 == 0)
        .mapToInt(Integer::intValue)
        .sum();

System.out.println("Sum of even numbers: " + sum);

この例では、リストから偶数だけを抽出し、それらの合計を計算しています。合計が0の場合、デフォルト値として”No even numbers found”を使っています。

JavaのStream APIとOptionalを組み合わせることで、より柔軟で安全なコードを書くことができます。特にデータが存在しない可能性がある場合に、Optionalを活用することでエレガントなソリューションを実現できます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です