Stream APIの実践
メニューを表示するにはスワイプしてください
ここでは、Stream API の練習を行います。いくつかのシンプルな課題があり、さまざまな Stream API メソッドの使用が求められます。今回は特定の課題は提示されません。その代わりに、操作対象のリストと期待される結果が与えられます。つまり、リストに対して操作を行い、期待される結果を得ることが目標です。
このタイプの課題は、明確な仕様がなくても結果を導くスキルを養うのに役立ちます。入力データと期待される結果のみが表示されます。
これらの課題を達成するために Stream API を使用してください!
課題 1:
入力:
Main.java
1234567891011package 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
1234567891011package 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
123456789101112131415package 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
1234567891011package 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
1234567891011package 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 を開いて機能を調べてください。
プログラミングは継続的な学習です。新しい解決策を探し、インターネットで検索し、必要に応じてドキュメントを参照してください。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください