Skip to content

Stream API

Jeonghyun Kang edited this page May 15, 2022 · 1 revision

스트림 실습

실습 준비 사항

// 스프링 수업List<OnlineClass> springClasses = newArrayList<>();
springClasses.add(newOnlineClass(1, "spring boot", true));
springClasses.add(newOnlineClass(2, "spring data jpa", true));
springClasses.add(newOnlineClass(3, "spring mvc", false));
springClasses.add(newOnlineClass(4, "spring core", false));
springClasses.add(newOnlineClass(5, "rest api development", false));
// 자바 수업List<OnlineClass> javaClasses = newArrayList<>();
javaClasses.add(newOnlineClass(6, "The Java, Test", true));
javaClasses.add(newOnlineClass(7, "The Java, Code manipulation", true));
javaClasses.add(newOnlineClass(8, "The Java, 8 to 11", false));
// 모든 수업List<List<OnlineClass>> keesunEvents = newArrayList<>();
keesunEvents.add(springClasses);
keesunEvents.add(javaClasses);

실습 문제

1. "spring"으로 시작하는 스프링 수업

System.out.println("spring 으로 시작하는 스프링 수업");
springClasses.stream()
.filter(oc -> oc.getTitle().startsWith("spring"))
.forEach(oc -> System.out.println(oc.getId()));

2. close 되지 않은 스프링 수업

springClasses.stream()
.filter(Predicate.not(OnlineClass::isClosed))
.forEach(oc -> System.out.println(oc.getId()));

3. 스프링 수업 이름만 모아서 스트림 만들기

springClasses.stream()
.map(OnlineClass::getTitle)
.forEach(System.out::println);

4. 두 수업 목록에 들어있는 모든 수업 아이디 출력

keesunEvents.stream()
.flatMap(Collection::stream)
.map(OnlineClass::getId)
.forEach(System.out::println);

5. 10부터 1씩 증가하는 무제한 스트림 중에서 앞에 10개를 제외하고 10개를 출력

Stream.iterate(10, i -> i+1)
.skip(10)
.limit(10)
.forEach(System.out::println);

6. 자바 수업 중에 제목에 "Test"가 들어있는 수업이 있는지 확인

booleantest = javaClasses.stream()
.anyMatch(oc -> oc.getTitle().contains("Test"));
System.out.println(test);

7. 스프링 수업 중에 제목에 "spring"이 들어간 것만 모아서 리스트로 만들기

List<String> spring = springClasses.stream()
.filter(oc -> oc.getTitle().contains("spring"))
.map(OnlineClass::getTitle)
.collect(Collectors.toList());
System.out.println(spring);

Clone this wiki locally