Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Stream APIの実践 | 高度なJava機能とテクニック
Javaデータ構造

bookStream APIの実践

メニューを表示するにはスワイプしてください

ここでは、Stream API の練習を行います。いくつかのシンプルな課題があり、さまざまな Stream API メソッドの使用が求められます。今回は特定の課題は提示されません。その代わりに、操作対象のリスト期待される結果が与えられます。つまり、リストに対して操作を行い、期待される結果を得ることが目標です。

このタイプの課題は、明確な仕様がなくても結果を導くスキルを養うのに役立ちます。入力データ期待される結果のみが表示されます。

これらの課題を達成するために Stream API を使用してください!

課題 1:

入力:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); // Write your code here } }

Stream APIを使用して、リスト内の各数値を2乗し、その結果を新しいリストに収集。 期待される出力:

[1, 4, 9, 16, 25]

ここではmap()メソッドとtoList()メソッドを使用。

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> result = numbers.stream().map(e -> e * e).toList();
        System.out.println(result);
        // Write your code here
    }
}

タスク 2:

入力:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva"); // Write your code here } }

Stream API を使用して、リスト内で最も長い名前の長さを求める。 期待される出力:

7

map() および max() の中間メソッドと、get() の終端メソッドの使用

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eva");
        Integer result = names
                .stream()
                .map(e -> e.length())
                .max((integer, newInteger) -> Integer.compare(integer, newInteger))
                .get();
        System.out.println(result);
        // Write your code here
    }
}

タスク 3

入力:

Main.java

Main.java

copy
123456789101112131415
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> sentences = Arrays.asList( "Java Stream API provides a fluent interface for processing sequences of elements.", "It supports functional-style operations on streams of elements, such as map-reduce transformations.", "In this exercise, you need to count the total number of words in all sentences." ); // Write your code here } }

Stream API を使用して、すべての文に含まれる異なる単語(大文字・小文字を区別しない)の総数をカウント。 期待される出力:

37

flatMap()distinct() の中間メソッド、および count() の終端メソッドを使用。

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> sentences = Arrays.asList(
                "Java Stream API provides a fluent interface for processing sequences of elements.",
                "It supports functional-style operations on streams of elements, such as map-reduce transformations.",
                "In this exercise, you need to count the total number of words in all sentences."
        );
        long count = sentences.stream()
                .flatMap(e -> Arrays.stream(e.split(" ")))
                .distinct()
                .count();
        System.out.println(count);
        // Write your code here
    }
}

タスク 4:

入力:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry"); // Write your code here } }

Stream APIを使用して、長さが偶数である最初の2つの単語を連結した結果を求める。

期待される出力:

bananacherry

filter()およびlimit()の中間メソッドと、collect()の終端メソッドを使用。

package com.example;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "elderberry");
        String result = words.stream()
                .filter(e -> e.length() % 2 == 0)
                .limit(2)
                .collect(Collectors.joining());
        System.out.println(result);
        // Write your code here
    }
}

タスク 5:

入力:

Main.java

Main.java

copy
1234567891011
package com.example; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // Write your code here } }

リスト内の偶数の平方の合計を求めるためにStream APIを使用。

期待される出力:

220

mapToInt()filter() の中間メソッド、および sum() の終端メソッドを使用。

package com.example;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        int sum = numbers.stream()
                .mapToInt(e -> e * e)
                .filter(e -> e % 2 == 0)
                .sum();
        System.out.println(sum);
        // Write your code here
    }
}

よくできました!

すべての課題を完了した場合、お疲れ様でした。

課題内の一部のメソッドは、これまでに説明されていない場合があります。詳細を確認するには、IntelliJ IDEA を開いて機能を調べてください。

プログラミングは継続的な学習です。新しい解決策を探し、インターネットで検索し、必要に応じてドキュメントを参照してください。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  5
some-alt