✍️ Stream API 실습
Stream API flatMap map, filter, anyMatch를 사용해 보자
온라인 강의의 id와 강의명, 마감 여부를 담는 OnlineClass
public class OnlineClass {
private Integer id;
private String title;
private boolean closed;
public OnlineClass(Integer id, String title, boolean closed) {
this.id = id;
this.title = title;
this.closed = closed;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isClosed() {
return closed;
}
public void setClosed(boolean closed) {
this.closed = closed;
}
}
springClasses, javaClasses
nestesClasses = springClasses + javaClasses
public static void main(String[] args) {
List<OnlineClass> springClasses = new ArrayList<>();
springClasses.add(new OnlineClass(1, "spring boot", true));
springClasses.add(new OnlineClass(2, "spring data jpa", true));
springClasses.add(new OnlineClass(3, "spring mvc", false));
springClasses.add(new OnlineClass(4, "spring core", false));
springClasses.add(new OnlineClass(5, "rest api development", false));
List<OnlineClass> javaClasses = new ArrayList<>();
javaClasses.add(new OnlineClass(6, "The java, Test", true));
javaClasses.add(new OnlineClass(7, "The java, Code manipulation", true));
javaClasses.add(new OnlineClass(8, "The java, 8 to 11", false));
List<List<OnlineClass>> nestedClasses = new ArrayList<>();
nestedClasses.add(springClasses);
nestedClasses.add(javaClasses);
}
🍊 퀴즈
1. [springClasses] spring으로 시작하는 수업 출력
springClasses.stream().filter(c -> c.getTitle().startsWith("spring"))
.forEach(c -> System.out.println(c.getTitle()));
// spring boot
// spring data jpa
// spring mvc
// spring core
2. [springClasses] closed 되지 않은 수업 출력
springClasses.stream().filter(Predicate.not(OnlineClass::isClosed))
.forEach(c -> System.out.println(c.getTitle()));
// spring mvc
// spring core
// rest api development
3. [springClasses] Spring 수업의 이름(title)만 모아서 출력
springClasses.stream()
.map(OnlineClass::getTitle)
.forEach(title -> System.out.println(title));
// spring boot
// spring data jpa
// spring mvc
// spring core
// rest api development
4. [nestedClasses] 두 수업 목록에 들어있는 모든 수업의 이름 출력
nestedClasses.stream().flatMap(classes -> classes.stream())
.forEach(c -> System.out.println(c.getTitle()));
// spring boot
// spring data jpa
// spring mvc
// spring core
// rest api development
// The java, Test
// The java, Code manipulation
// The java, 8 to 11
5. [nestedClasses] 앞에 위치한 세 개의 수업만 출력
nestedClasses.stream().flatMap(classes -> classes.stream()).limit(3)
.forEach(c -> System.out.println(c.getTitle()));
// spring boot
// spring data jpa
// spring mvc
6. [javaClasses] 자바 수업 중 Test가 들어있는 수업이 있는지 확인
boolean test = javaClasses.stream().anyMatch(c -> c.getTitle().contains("Test"));
System.out.println(test);
// true
7. [springClasses] 스프링 수업 중에 제목이 spring이 들어간 수업의 제목만 모아서 List로 만들기
List<String> titles = springClasses.stream().map(OnlineClass::getTitle).filter(t -> t.contains("spring"))
.collect(Collectors.toList());
titles.forEach(System.out::println);
// spring boot
// spring data jpa
// spring mvc
// spring core
'Java > Java 8' 카테고리의 다른 글
[Java8] Chapter 4-2. Optional API 실습 (2) (0) | 2022.02.21 |
---|---|
[Java8] Chapter 4-1. Optional (1) (0) | 2022.02.20 |
[Java8] Chapter 3-1. Stream API (1) (0) | 2022.02.18 |
[Java8] Chapter 2-1. 인터페이스 default, static 메서드 (0) | 2022.02.17 |
[Java8] Chapter 1-4. 메서드 레퍼런스 (0) | 2022.02.16 |