お知らせ
2023.12.5(Tue)
目次
こんにちは。大城です。
今回は、Java SE 8で追加されたStream APIについて、初心者向けに解説していきます。
今回は、絞り込みや要素の変換などを行う中間処理filterとmapについて詳しく紹介していきたいと思います。
まずは要素の絞り込みを行うfilterメソッドについて説明します。
filterは、条件に合致した要素のみからなる新しいStreamを返却します。
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;
}
}
public class Main {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>(Arrays.asList(new Person("taro", 21), new Person("jiro", 19), new Person("saburo", 18), new Person("hanako", 20)));
// Streamの取得
Stream<Person> stream = list.stream();
// filterメソッドにより、ageが20以上の要素のみ抽出
Stream<Person> stream2 = stream.filter(p -> p.getAge() >= 20);
stream2.forEach(p -> System.out.println(p.getName()));
}
}
taro hanako
続いてmapメソッドについて説明します。まずは例をご覧ください。
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;
}
}
public class Main {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>(Arrays.asList(new Person("taro", 21), new Person("jiro", 19), new Person("saburo", 18), new Person("hanako", 20)));
// Streamの取得
Stream<Person> stream = list.stream();
// mapメソッドにり、PersonのStreamからStringのStreamに変換
Stream<String> stream2 = stream.map(p -> p.getName());
stream2.forEach(p -> System.out.println(p));
}
}
taro jiro saburo hanako
いかがでしたか。
filterメソッドは、条件による要素の抽出を1行で記載でき、mapメソッドは要素の変換を1行で記載できます。いずれも、処理後にどんなStreamが取得できるのかがわかりやすくなっています。
次回以降では、このほかの中間処理メソッドについても解説していこうと思います。
それでは、また。
《関連記事》