Stream<T> Collection.stream()
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> intStream = list.stream();
String[] strArr = {"aaa", "ddd", "ccc"};
Stream<String> strStream = Stream.of(strArr);
Stream<String> strStream = Arrays.stream(strArr);
IntStream intStream = IntStream.range(1, 5);
IntStream intStream = IntStream.rangeClose(1, 5);
Stream 클래스의 iterate(), generate()는 람다식을 매개변수로 받아서 이 람다식에 의해 계산되는 결과값들을 요소로 하는 무한 스트림을 생성함
Stream<Integer> evenStream = Stream.iterate(0, n -> n+2);
Stream<Double> randomStream = Stream.generate(Mate::random);
중간연산 | 설명 |
---|---|
Stream < T > distinct() | 중복제거 |
Stream < T > filter(Predicate < T > predicate | 조건에 안 맞는 요소 제외 |
Stream < T > limit(long maxSize) | 스트림의 일부 잘라내기 |
Stream < T > skip(ling n) | 스트림의 일부 건너뛰기 |
Stream < T > peek(Consumer< T > action) | 스트림의 요소에 작업수행 |
Stream < T > sorted() | 스트림의 요소 정렬 |
Stream<String> strStream = Stream.of("dd", "aaa", "CC", "cc", "b");
strStream.sorted().forEach(System.out::print);
스트림의 요소에 저장된 값 중에서 원하는 필드만 뽑아내거나 특정 형태로 변환해야할 때 사용
◦ DoubleStream mapToDouble (ToDoubleFunction < T > mapper)
◦ IntStream mapToInt (ToIntFunction < T > mapper)
◦ LongStream mapToLong (ToLongFunction < T > mapper)
mapToObj(), boxed()
반대로 IntStream을 Stream < T >로 변환할 때는 mapToObj()를, Stream로 변환할 때는 boxed()를 사용함
flatMap : Stream < T [] >를 Stream < T >로 다루는 것이 편리할 때 사용
◦ DoubleStream flatMapToDouble (Function< T, DoubleStream > mapper)
◦ IntStream flatMapToInt (Function< T, IntStream > mapper)
◦ LongStream flatMapToLong (Function< T, LongStream > mapper)
String str = "abc";
Optional <String> optVal = Optional.of(str);
참조변수의 값이 null일 가능성이 있으면 of()대신(NullPointerException 발생) ofNullable()을 사용해야 함
Optional <String> optVal = Optional.ofNullable(null);
Optional <String> optVal = null; // null로 초기화
Optional <String> optVal = Optional.<String>empty; // 빈 객체로 초기화
Optional<String> optVal = Optional.of("abc");
String str1 = optVal.get(); // optVal에 저장된 값을 반환. null이면 예외발생
String str2 = optVal.orElse(""); // optVal에 저장된 값이 null일 때는, ""를 반환
String str3 = optVal.orElseGet(String::new); // 람다식 사용가능 () -> new String()
String str4 = optVal.orElseThrow(NullPointerException::new); // 널이면 예외발생
if(Optional.ofNullable(str).isPresent()) { // 값이 null이면 fasle, 아니면 true 반환
System.out.println(str);
}
최종연산 | 설명 |
---|---|
void forEach(Consumer <? super T> action) | 각 요소에 지정된 작업 수행 |
long count() | 스트림의 요소 개수 |
Optional < T > max (Comparator <? super T> comparator) | 스트림의 최댓값 |
Optional < T > min (Comparator <? super T> comparator) | 스트림의 최솟값 |
Optional < T > findAny() | 아무거나 하나 |
Optional < T > findFirst() | 첫번째 요소 |
boolean allMatch(Pradicate < T > p) | 모두 만족하는지? |
boolean anyMatch(Pradicate < T > p) | 하나라도 만족하는지? |
boolean noneMatch(Pradicate < T > p) | 모두 만족하지 않는지? |
Object[] toArray() | 스트림의 모든 요소를 배열로 return |