자바의 정석 3판 - 연습문제 14-4
- 배열에 4개의 원소가 있고, 문자열의 각 길의를 더하면 되는 문제이므로, 문자열의 길이들을 요소로 하는
스트림을 생성하고, 바로 sum( )을 이용해서 값을 뽑아내게 작성하였다.
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Exercise14_4 {
public static void main(String[] args) {
String[] strArr = {"aaa", "bb", "c", "dddd"};
Stream<String> strSTream = Stream.of(strArr);
IntStream intStream = strSTream.mapToInt(String::length);
System.out.println("sum = " + intStream.sum());
int sum1 = Arrays.stream(strArr).mapToInt(String::length).sum();
System.out.println("sum = " + sum1);
}
}
자바의 정석 3판 - 연습문제 14-5
- strArr의 요소들을 요소로 삼는 스트림을 생성하고, 14-4와 같이 기본형 스트림(IntStream)으로 변환해서
최대값을 뽑아내면 된다.
- stream.max( )까지만 하면 OptionalInt를 반환 하므로, 한번 더 도트 연산자를 이용해 getAsInt( )를 호출해야 정수형으로 리턴받을 수 있다.
import java.util.Arrays;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Exercise14_5 {
public static void main(String[] args) {
String[] strArr = {"aaa", "bb", "c", "dddd"};
Stream<String> strStream = Stream.of(strArr);
IntStream stream = strStream.mapToInt(String::length);
int max1 = stream.max().getAsInt();
int max2 = Arrays.stream(strArr).mapToInt(String::length).max().getAsInt();
System.out.println("max = " + max1);
System.out.println("max = " + max2);
}
}
자바의 정석 3판 연습문제 14-6
- Random 클래스를 이용해 난수를 발생시키는 스트림을 만들고, IntStream에 담아서 요소의 갯수를 제한한 후
중복제거 및 정렬후에 출력을 하면 된다.
import java.util.Random;
import java.util.stream.IntStream;
public class Exercise14_6 {
public static void main(String[] args) {
IntStream intStream = new Random().ints(1,46);
intStream.
distinct().
limit(6).
sorted().
forEach(System.out::println);
new Random().ints(1, 46)
.distinct()
.limit(6)
.sorted()
.forEach(System.out::println);
}
}
출처 : 자바의 정석 3rd Edition(남궁성 저, 도우출판)