: 람다 표현식의 축약된 표현 방법
클래스명::static메서드명
참조변수명::메서드명 (단, 참조변수가 파라미터인 경우에는 클래스명::메서드명 형식 사용)
클래스명::new
System.out::println
이전 사용 형태
: 컬렉션, 배열, 파일에서 읽어서 출력 및 간단한 작업 (컬렉션에 값 추가, 삭제, 수정)
Stream API
: 컬렉션, 배열, 파일에서 Stream 타입을 얻으면, Stream 안에 정렬, 필터, 가공 기능 등 내장되어 있음
List<String> list = Arrays.asList("박현아", "문지해", "지다솜");
Stream<String> s = list.stream();
String[] names = {"박현아", "문지해", "지다솜"};
Stream<String> s = Arrays.stream(names);
Stream<String> s2 = Stream.of(names);
Stream<String> s3 = Stream.of("박현아", "문지해", "지다솜");
-> 중간 처리는 처리 후 대부분이 Stream이 반환됨
: distinct()
: filter(Predicate)
: map(Function), mapToInt(ToIntFunction) -> 파라미터 한 개 입력되면 리턴값 한 개
: flatMap(Function) : Stream -> 하나의 파라미터로 여러 개의 요소들로 구성된 새로운 Stream을 반환한다.
예> 입력: "a/b/c"
리턴: [a,b,c] 형태의 Stream 반환됨
: 반환값이 정수라면 flatMapToInt(Function<? super T,? extends IntStream> mapper)
Arrays.sort(배열); // 오름차순
Arrays.sort(배열, Comparator); // 내림차순
Collections.sort(컬렉션, Comparator);
sorted()
sorted(Comparator)
sorted(Comparator.comparing(t->t.getEng()) // 권장, 기본은 오름차순
sorted(Comparator.comparing(t->t.getEng(), Comparator.reverseOrder()) // 내림차순
allMatch(Predicate) : 모든 값이 만족하는지 체크
anyMatch(Predicate) : 최소 한 개 값이 만족하는지 체크
noneMatch(Predicate) : 모두 만족 안 하는지 체크
-> Stream 아니고 IntStream인 경우에 사용할 수 있다 (count() 제외 !!!)
-> 중간처리와 연계해서 작업 가능
collect(Collectors.counting()); //갯수
collect(Collectors.summingInt(t->t.getEng())); // 합
collect(Collectors.averagingDouble(t->t.getEng())); // 평균
collect(Collectors.maxBy(Comparator.comparing(Student8::getEng))); // 최대값
collect(Collectors.minBy(Comparator.comparing(Student8::getEng))) // 최소값