본문 바로가기

자바82

[모던자바인액션] 스트림API가 지원하는 다양한 연산 자바8과 자바9에 추가된 스트림API의 다양한 연산을 살펴보자 1. 필터링 필터링은 스트림의 요소를 선택하는 방법이다. 프레디케이트로 필터링 방법과 고유 요소만 필터링하는 방법이 있다. 1) 프레디케이트 필터링 프리디케이트(불리언을 반환하는 함수)를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. List vegetarianMenu = menu.stream() .filter(Dish::isVegetarian) .collect(toList()); 2) 고유 요소 필터링 스트림은 고유 요소만 필터링하는 distinct 메서드를 지원한다. 리스트의 모든 짝수를 선택하고 중복을 필터링하는 예제이다. List numbers = Arrays.asList(1,2,1,3,3,2,4); n.. 2022. 2. 19.
[모던자바인액션] 람다식과 함수형 인터페이스 람다 표현식은 어디에, 어떻게 사용할까? -> 함수형 인터페이스라는 문맥에서 사용할 수 있다. 함수형 인터페이스 람다식은 익명 클래스의 객체와 동등하다. 그렇다면 람다식으로 정의된 익명 객체의 메서드는 어떻게 호출할 것인가? 타입 f = (int a, int b) -> a>b?a:b; 먼저 참조 변수 f에 익명 객체를 저장해 보았다. 그렇다면 참조변수 f의 타입은 어떤 것이 와야 할까? 일단 참조 변수이기 때문에 클래스 또는 인터페이스가 가능하며 람다식과 동등한 메서드가 정의되어있어야 한다. 예를 들어 아래와 같이 정의된 인터페이스가 있다고 가정하자. interface MyFunction{ public abstract int max(int a, int b); } MyFunction 인터페이스를 구현한 익.. 2022. 1. 12.
반응형