더북(TheBook)

05 Stream.iterate를 사용해 난수의 무한 스트림을 만들어라. 이때 Math.random을 호출하지 말고 선형 적합 발생기 linear congruential generator를 직접 구현해서 사용한다. 이와 같은 발생기에서는 x0 = seed 로 시작해 적합한 a, c, m 값에 대해 xn + 1 = (axn + c) % m을 생산한다. 파라미터로 a, c, m, seed를 받고 Stream<Long>을 리턴하는 메서드를 구현해야 한다. a = 25214903917, c = 11, m = 248 값으로 난수의 무한 스트림을 만들어본다.

06 “2.3 filter, map, flatMap 메서드” 절의 characterStream 메서드는 먼저 ArrayList를 채운 후 스트림으로 변환하기 때문에 약간은 세련되지 못했다. 스트림에 기반을 둔 한 행짜리 메서드로 작성하라. 한 가지 접근법은 0 ~ s.length() - 1 범위에서 정수 스트림을 만들어서 메서드 레퍼런스에 맵핑하는 것이다.

07 여러분의 관리자가 public static <T> boolean isFinite(Stream<T> stream) 메서드를 작성하라고 했다고 하자. 이 메서드를 작성하는 일이 썩 좋지 못한 생각인 이유는 무엇인가? 어쨌든 지금 바로 작성하자.

08 public static <T> Stream<T> zip(Stream<T> first, Stream<T> second) 메서드를 작성하라. 이 메서드는 firstsecond 스트림의 요소들을 교환하며, 두 스트림 중 하나에서 요소가 바닥이 나면 작업을 중단한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.