StreamEx 14-Collect()の収集
<Person class>
package day15;
public class Person {
public enum Gender { MALE, FEMALE }
public enum City { Seoul, Pusan }
private String name;
private int age;
private Gender gender;
private City city;
public Person(String name, int age, Gender gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public Person(String name, int age, Gender gender, City city) {
this.name = name;
this.age = age;
this.gender = gender;
this.city = city;
}
public String getName() { return name; }
public int getAge() { return age; }
public Gender getGender() { return gender; }
public City getCity() { return city; }
}
---------------------------------------------------------------------------------
<StreamEx14 class>
package day15;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamEx14 {
public static void main(String[] args) {
List<Person> list = Arrays.asList(
new Person("aaa", 10, Person.Gender.MALE),
new Person("bbb", 20, Person.Gender.FEMALE),
new Person("ccc", 5, Person.Gender.MALE),
new Person("ddd", 10, Person.Gender.FEMALE)
);
// Person들 중 남자만 필터링해 별도의 List생성
// 풀어서 작성
Stream<Person> orgStream = list.stream();
Stream<Person> maleStream = orgStream.filter(p -> p.getGender() == Person.Gender.MALE);
Collector<Person, ?, List<Person>> collector = Collectors.toList();
List<Person> maleList = maleStream.collect(collector);
maleList.stream()
.forEach(l -> System.out.println(l.getName() + " " + l.getGender()));
System.out.println("--------------");
// 줄여서
List<Person> femaleList = list.stream()
.filter(p -> p.getGender() == Person.Gender.FEMALE)
.collect(Collectors.toList());
femaleList.stream()
.forEach(l -> System.out.println(l.getName() + " " + l.getGender()));
}
}
Reference
この問題について(StreamEx 14-Collect()の収集), 我々は、より多くの情報をここで見つけました https://velog.io/@jonny77/StreamEx14-수집-Collectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol