1. 스트림에 대한 설명으로 틀린 것은 무엇입니까?
- 스트림은 내부 반복자를 사용하기 때문에 코드가 간결해진다.
- 스트림은 요소를 분리해서 병렬 처리 시킬 수 있다.
- 스트림은 람다식을 사용해서 요소 처리 내용을 기술한다.
스트림은 요소를 모두 처리하고 나서 처음부터 요소를 다시 반복시킬 수 있다.
2. 스트림을 얻을 수 있는 소스가 아닌 것은 무엇입니까?
- 컬렉션(List)
- i
nt, long, double 범위 - 디렉토리
- 배열
3. 스트림 파이프라인에 대한 설명으로 틀린 것은 무엇입니까?
- 스트림을 연결해서 중간 처리와 최종 처리를 할 수 있다.
- 중간 처리 단계에서는 필터링, 매핑 ,정렬, 그룹핑을 한다.
- 최종 처리 단계에서는 합계, 평균, 카운팅, 최대값, 최소값 등을 얻을 수 있다.
최종 처리가 시작되기 전에 중간 처리 단계부터 시작시킬 수 있다.
4. 스트림 병렬 처리에 대한 설명으로 틀린 것은 무엇입니까?
- 멀티 코어의 수에 따라 요소를 분해하고 스레드를 생성시킨다.
- 내부적으로 포크조인 프레임워크를 이용한다.
병렬 처리는 순차적 처리보다 항상 빠른 처리를 한다.- 내부적으로 스레드풀을 이용해서 스레드를 관리한다.
5. List에 저장되어 있는 String 요소에서 대소문자와 상관없이 "java"라는 단어가 포함된 문자열만 필터링해서 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
package org.chapter16;
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<String> list = Arrays.asList(
"This is java book",
"Lamda Expression",
"Java8 supports lamda expressions"
);
list.stream()
.filter(a -> a.toLowerCase().contains("java"))
.forEach(a -> System.out.println(a));
}
}
6. List에 저장되어 있는 Member의 평균 나이를 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
package org.chapter16;
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", 30),
new Member("신용권", 40),
new Member("김자바", 26)
);
int sum = 0;
double avg = list.stream()
//작성 위치
.mapToInt(Member::getAge)
.average()
.getAsDouble();
System.out.println("평균 나이: " + avg);
}
}
7 .List에 저장되어 있는 Member 중에서 직업이 "개발자"인 사람만 별도의 List에 수집하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
package org.chapter16;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", "개발자"),
new Member("신용권", "디자이너"),
new Member("김자바", "개발자")
);
List<Member> developers = list.stream()
.filter(m -> m.getJob().equals("개발자"))
.collect(Collectors.toList());
developers.stream().forEach(m -> System.out.println(m.getName()));
}
static class Member {
private String name;
private String job;
public Member(String name, String job) {
this.name = name;
this.job = job;
}
public String getName() {
return name;
}
public String getJob() {
return job;
}
}
}
8. List에 저장되어 있는 Member를 직업별로 그룹핑해서 Map<String, List<String>>객체로 생성하려고 합니다. 키는 Member의 직업이고, 값은 Member의 이름으로 구성된 List<String>입니다. 빈칸에 알맞은 코드를 작성해보세요.
package org.chapter16;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", "개발자"),
new Member("신용권", "디자이너"),
new Member("김자바", "개발자")
);
Map<String, List<String>> groupingMap = list.stream()
.collect(Collectors.groupingBy(
Member::getJob,
Collectors.mapping(Member::getName,
Collectors.toList())
)
);
System.out.print("[개발자]\n");
groupingMap.get("개발자").stream().forEach(s -> System.out.println(s + " "));
System.out.println("\n[디자이너] ");
groupingMap.get("디자이너").stream().forEach(s -> System.out.println(s + " "));
}
static class Member {
private String name;
private String job;
public Member(String name, String job) {
this.name = name;
this.job = job;
}
public String getName() {
return name;
}
public String getJob() {
return job;
}
}
}
반응형
'개념' 카테고리의 다른 글
[JAVA의 정석] Chapter01 -03 (6) | 2024.09.06 |
---|---|
동아리 '공간감각' 자바 스터디 (3) | 2024.09.06 |
[이것이 자바다] chapter.15 확인 문제 (0) | 2023.04.04 |
[이것이 자바다] chapter.14 확인 문제 (0) | 2023.04.03 |
[이것이 자바다] chapter.13 확인 문제 (0) | 2023.04.03 |