JavaのStream APIを使ってmapメソッドをマスターしよう!
JavaのStream APIは、コレクションを効率的に操作するための強力な機能です。この記事では、Stream APIのmapメソッドについて解説します。mapメソッドを使うと、コレクションの各要素に関数を適用し、新しいリストを作成することができます。
それでは、実際にいくつかの例を見ていきましょう。
実例1: int型のリストの各要素を2倍にする
まずは、int型のリストの各要素を2倍にする例を見ていきます。
mapメソッドを使わない例
まずは、mapメソッドを使わずにint型のリストの各要素を2倍にする例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.ArrayList; import java.util.List; public class Program { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 3, 4, 5); List<Integer> doubledNumbers = new ArrayList<>(); for (int number : numbers) { doubledNumbers.add(number * 2); } System.out.println(doubledNumbers); } } |
出力結果
2 4 6 8 10
mapメソッドを使う例
次に、mapメソッドを使ってint型のリストの各要素を2倍にする例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.List; import java.util.stream.Collectors; public class Program { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 3, 4, 5); List<Integer> doubledNumbers = numbers.stream() .map(number -> number * 2) .collect(Collectors.toList()); System.out.println(doubledNumbers); } } |
出力結果
2 4 6 8 10
それでは、mapメソッド適用前と適用後の要素を見てみましょう。
適用前 | 適用後 |
---|---|
1 | 2 |
2 | 4 |
3 | 6 |
4 | 8 |
5 | 10 |
それでは、次の例を見ていきましょう。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
実例2: String型のリストの各要素に接尾辞を追加する
mapメソッドを使わない例
まずは、for文を使ってString型のリストの各要素に接尾辞を追加する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.ArrayList; import java.util.List; public class Program { public static void main(String[] args) { List<String> words = List.of("apple", "banana", "cherry"); List<String> modifiedWords = new ArrayList<>(); for (String word : words) { modifiedWords.add(word + "_fruit"); } System.out.println(modifiedWords); } } |
出力結果
[apple_fruit, banana_fruit, cherry_fruit]
mapメソッドを使う例
次に、mapメソッドを使ってString型のリストの各要素に接尾辞を追加する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import java.util.List; import java.util.stream.Collectors; public class Program { public static void main(String[] args) { List<String> words = List.of("apple", "banana", "cherry"); List<String> modifiedWords = words.stream() .map(word -> word + "_fruit") .collect(Collectors.toList()); System.out.println(modifiedWords); } }<code class="language-java"> |
出力結果
[apple_fruit, banana_fruit, cherry_fruit]
それでは、mapメソッド適用前と適用後の要素を見てみましょう。
適用前 | 適用後 |
---|---|
apple | apple_fruit |
banana | banana_fruit |
cherry | cherry_fruit |
最後の例を見ていきましょう。
実例3: オブジェクトのリストの各要素のフィールドを変更する
最後に、オブジェクトのリストの各要素のフィールドを変更する例を見ていきましょう。ここでは、Personクラスのオブジェクトのリストを扱います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } |
mapメソッドを使わない例
まずは、for文を使ってPersonオブジェクトのリストの各要素の年齢を1歳増やす例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.util.List; import java.util.stream.Collectors; public class Program { public static void main(String[] args) { List<Person> people = List.of(new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 20)); List<Person> modifiedPeople = people.stream() .map(person -> { person.setAge(person.getAge() + 1); return person; }) .collect(Collectors.toList()); System.out.println(modifiedPeople); } }<code class="language-java"> |
出力結果
[Person{name='Alice', age=31}, Person{name='Bob', age=26}, Person{name='Charlie', age=21}]
mapメソッドを使う例
次に、mapメソッドを使ってPersonオブジェクトのリストの各要素の年齢を1歳増やす例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.util.List; import java.util.stream.Collectors; public class Example3_Stream { public static void main(String[] args) { List people = List.of(new Person("Alice", 30), new Person("Bob", 25), new Person("Charlie", 20)); List modifiedPeople = people.stream() .map(person -> { person.setAge(person.getAge() + 1); return person; }) .collect(Collectors.toList()); System.out.println(modifiedPeople); } } |
出力結果
[Person{name='Alice', age=31}, Person{name='Bob', age=26}, Person{name='Charlie', age=21}]
まとめ
この記事では、JavaのStream APIのmapメソッドの使い方について、3つの実例を通して解説しました。また、mapメソッドを使わない例と比較して、mapメソッドを使うメリットを理解できるようにしました。この記事が、JavaのStream APIの理解に役立つことを願っています。