본문 바로가기
Java/이것이 자바다

이자바 16장(스트림과 병렬 처리) 확인문제

by k-mozzi 2023. 5. 7.
반응형
Preface

 

이번 장을 제대로 이해하지 못한 것인지, 람다식과 메소드 참조 부분의 이해가 부족한 것인지, 문제를 풀다가 해결 방법을 모르겠어서 출판사에서 제공하는 확인문제 강의를 봤다.

 

아무래도 다음 장을 공부하기 전에 람다식 부분과 이번 장을 다시 한 번 천천히 살펴봐야 할 것 같다.


 

- 5번

package ch16;

import java.util.Arrays;
import java.util.List;

public class Exercise5 {

	public static void main(String[] args) {

		List<String> list = Arrays.asList("This is a java book", "Lambda Expressions",
				"Java8 supports lambda expresstions");
		list.stream().filter(s -> s.toLowerCase().contains("java")).forEach(a -> System.out.println(a));
	}

}

 

 

- 6번

package ch16;

import java.util.Arrays;
import java.util.List;

public class Exercise6 {

	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);
	}

	static 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;
		}
	}

}

 

 

- 7번

package ch16;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Exercise7 {

	public static void main(String[] args) {

		List<Member> list = Arrays.asList(new Member("홍길동", "개발자"), new Member("김나리", "디자이너"),
				new Member("신용권", "개발자"));

		List<Member> developers = list.stream().filter(n -> n.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번

package ch16;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import ch16.Exercise7.Member;

public class Exercise8 {

	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(m -> m.getName(), Collectors.toList())));

		System.out.print("[개발자] ");
		groupingMap.get("개발자").stream().forEach(s -> System.out.print(s + " "));
		System.out.print("\n[디자이너] ");
		groupingMap.get("디자이너").stream().forEach(s -> System.out.print(s + " "));
	}

}

 

728x90
반응형

'Java > 이것이 자바다' 카테고리의 다른 글

네트워킹  (0) 2023.05.12
IO 기반 입출력  (0) 2023.05.12
스트림과 병렬 처리  (0) 2023.05.07
이자바 15장(컬렉션 프레임워크) 확인문제  (0) 2023.05.02
컬렉션 프레임워크  (0) 2023.05.02

댓글