코드 저장소.

[이것이 자바다] Chapter.16 람다/스트림 연습문제 본문

Java

[이것이 자바다] Chapter.16 람다/스트림 연습문제

slown 2023. 8. 5. 22:33

문제1. 스트림에 대한 설명으로 틀린 것은 무엇입니까?

 

1.스트림은 내부 반복자를 사용하기 때문에 코드가 간결해진다.

2.스트림은 요소를 분리해서 병렬 처리시킬 수 있다.

3.스트림은 람다식을 사용해서 요소 처리 내용을 기술한다.

4.스트림은 요소를 모두 처리하고 나서 처음부터 요소를 다시 반복시킬수 있다.

 

답:4

->스트림은 일회성이므로 요소를 모두 처리한 뒤에는 다시 반복할 수 없다.

 

문제2. 스트림을 얻을 수 있는 소스가 아닌것은 무엇인가?

 

1.컬랙션

2.int,long,double 범위

3.디렉토리

4.배열

 

답:2

->int,long,double 범위는 스트림을 얻을 수 없다.

 

문제3.스트림 파이프라인에 대한 설명으로 틀린 것은?

 

1.스트림을 연결해서 중간 처리와 최종 처리를 할 수 있다.

2.중간 처리 단계에서는 필터링,매핑,정렬,그룹핑을 할 수 있다.

3.최종 처리 단계에서는 합계,평균,카운팅,최댓값,최솟값 등을 얻을 수 있다.

4.최종 처리가 시작되기 전에 중간 처리 단계부터 시작시킬 수 있다.

 

답:4

->최종처리가 없으면 중간처리를 할 수가 없다.

 

문제4.스트림 병렬 처리에 대한 설명으로 틀린 것은?

 

1.멀티 코어의 수에 따라 요소를 분해하고 스레드를 생성한다.

2.내부적으로 포크조인 프레임워크를 이용한다.

3.병렬 처리는 순차적 처리보다 항상 빠른 처리를 한다.

4.내부적으로 스레드풀을 이용해서 스레드를 관리한다.

 

답:3

 

문제5.

답:

List<String>list = Arrays
			.asList( 
            "This is a java book",
		  	"Lamda Expressions", 
            "Java8 supports lamda expressions");
		  
		  list .stream()
		  .filter(str->str.toLowerCase().contains("java"))
		  .forEach(str->System.out.println(str));

 

문제6.

답:

System.out.println("평균 나이::"+memberList.stream().collect(Collectors.averagingDouble(Member::getAge)));

문제7.

답:

List<Member>result = memberList
				  .stream()
				  .filter(member->member.getJob()=="개발자").toList();
		  
result.stream()
      .forEach(member->System.out.println("직업이 개발자인 사람의 이름::"+member.getName()));

문제8.

답:

Map<String,List<Member>>jobList = memberList.stream().collect(Collectors.groupingBy(m->m.getJob()));
		  System.out.print("개발자");
		  jobList.get("개발자").forEach(m->System.out.println(m));
		  
		  System.out.print("디자이너");
		  jobList.get("디자이너").forEach(m->System.out.println(m));