1. List에 저장되어 있는 String 요소에서 대소문자와 상관없이 'java'라는 단어가 포함된 문자열만 필터링해서 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> list = Arrays.asList(
"This is a java book",
"Lambda Expressions",
"Java8 supports lambda expressions"
);
list.stream()
[빈칸]
.filter(a -> a.toLowerCase().contains("java"))
.forEach(a -> System.out.println(a));
👉우선 모두 소문자로 바꾸고 java가 포함된 문자열을 출력한다.
실행 결과
This is a java book
Java8 supports lambda expressions
2.List에 저장되어 있는 Member의 평균 나이를 출력하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
public class Member {
private String name;
private int age;
public Member(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public int getAge() { return age; }
}
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", 30),
new Member("김길동", 40),
new Member("김자바", 26)
);
double avg = list.stream()
[빈칸]
.mapToInt(Member::getAge)
.average()
.getAsDouble();
👉 멤버의 나이를 맵핑하고 평균을 내고 더블로 변환한다.
System.out.println("평균 나이: " + avg);
실행 결과
평균 나이: 32.0
3.List에 저장되어 있는 Member 중에서 직업이 '개발자'인 사람만 별도의 List에 수집하려고 합니다. 빈칸에 알맞은 코드를 작성해보세요.
public 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; }
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
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());
👉 개발자로 필터링 된 요소들을 collect() 메소드를 이용해 요소들을 컬렉션에 담는다.
developers
.stream()
.forEach(m -> System.out.println(m.getName()));
실행 결과
홍길동
김자바
4. List에 저장되어 있는 Member를 직업별로 그룹핑해서 Map<String, List> 객체로 생성하려고 합니다. 키는 Member의 직업이고, 값은 해당 직업을 갖는 Member들을 저장하고 있는 List입니다. 실행 결과를 보고 빈칸에 알맞은 코드를 작성해보세요.
public 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; }
@Override
public String toString() {
return "{name:" + name + ", job:" + job + "}";
}
}
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<Member> list = Arrays.asList(
new Member("홍길동", "개발자"),
new Member("김길동", "디자이너"),
new Member("김자바", "개발자")
);
Map<String, List<Member>> groupingMap = list.stream()
[빈칸]
.colelct(Collectors.groupingBy(m -> m.getJob());
👉그룹핑 키를 리턴한다.
System.out.println("[개발자]");
[빈칸]
groupintMap.get("개발자").stream()
.forEach(m -> System.out.println(m));
👉그룹핑된 맵 중에 개발자를 출력한다.
System.out.println();
System.out.println("[디자이너]")
[빈칸]
groupintMap.get("디자이너").stream()
.forEach(m -> System.out.println(m));
👉그룹핑된 맵 중에 디자이너를 출력한다.
)
)
실행 결과
[개발자]
{name: 홍길동, job:개발자}
{name: 김자바, job:개발자}
[디자이너]
{name: 김길동, job:디자이너}