본문 바로가기
개념

[이것이 자바다] chapter.16 확인 문제

by cook_code 2023. 4. 11.
반응형

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

  1. 스트림은 내부 반복자를 사용하기 때문에 코드가 간결해진다. 
  2. 스트림은 요소를 분리해서 병렬 처리 시킬 수 있다. 
  3. 스트림은 람다식을 사용해서 요소 처리 내용을 기술한다.
  4. 스트림은 요소를 모두 처리하고 나서 처음부터 요소를 다시 반복시킬 수 있다. 

2. 스트림을 얻을 수 있는 소스가 아닌 것은 무엇입니까?

  1. 컬렉션(List)
  2. int, long, double 범위 
  3. 디렉토리 
  4. 배열

3. 스트림 파이프라인에 대한 설명으로 틀린 것은 무엇입니까?

  1. 스트림을 연결해서 중간 처리와 최종 처리를 할 수 있다. 
  2. 중간 처리 단계에서는 필터링, 매핑 ,정렬, 그룹핑을 한다. 
  3. 최종 처리 단계에서는 합계, 평균, 카운팅, 최대값, 최소값 등을 얻을 수 있다. 
  4. 최종 처리가 시작되기 전에 중간 처리 단계부터 시작시킬 수 있다. 

4. 스트림 병렬 처리에 대한 설명으로 틀린 것은 무엇입니까?

  1. 멀티 코어의 수에 따라 요소를 분해하고 스레드를 생성시킨다. 
  2. 내부적으로 포크조인 프레임워크를 이용한다. 
  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;
        }
    }
}
반응형