개인 재정 자바에서 스트림과 람다 식을 사용하기

자바에서 스트림과 람다 식을 사용하기

비디오: [자바 중급] 람다식 기본문법 2024

비디오: [자바 중급] 람다식 기본문법 2024
Anonim

자바는 스트림과 람다 표현을 최적으로 사용하는 멋진 메소드를 가지고있다. 스트림 및 람다 식을 사용하면 조립 라인을 생성 할 수 있습니다. 조립 라인 솔루션은 기능 프로그래밍의 개념을 사용합니다.

조립 라인은 몇 가지 방법으로 구성됩니다. 각 메소드는 데이터를 가져 와서 데이터를 어떤 방식 으로든 변환하고 그 결과를 다음 메소드로 전달합니다. 여기에 조립 라인이 있습니다.

함수형 프로그래밍 어셈블리 라인.

각 상자는 조립 라인을 따라 변형되는 수많은 원자재를 나타냅니다. 각 화살표는 메서드를 나타냅니다 (또는 은유 적으로 어셈블리 라인의 작업자).

예를 들어 두 번째 상자에서 세 번째 상자로 전환 할 때 작업자 메서드 ( filter 메서드)는 DVD가 아닌 항목의 판매를 선별합니다. 루시 리카도가 두 번째 상자와 세 번째 상자 사이에 서서 조립 선에서 각 서적이나 CD를 꺼내 부주의하게 바닥에 던지면 상상해보십시오.

필터 메소드의 파라미터는 Predicate - 결과가 boolean 인 람다 식입니다. 필터 메서드는 람다 식의 true / false 테스트를 통과하지 못하는 항목을 제거합니다. 일부 함수 프로그래밍 메소드

메소드 이름
멤버 매개 변수 결과 유형 결과 값 스트림
컬렉션 (예: 스트림 스트림 컬렉션 스트림 스트림 컬렉션
스트림 컬렉션 요소를 뱉어내는 스트림 > 람다 표현식이 반환하는 값을 포함하는 새로운 스트림 true map
Stream 함수 Stream 수신 스트림에 람다 표현식을 적용한 결과를 포함하는 새로운 스트림 Stream
Stream BinaryOperator BinaryOperator 에 사용되는 형식 수신 스트림의 모든 값을 결합한 결과
map

메서드)는 각 항목 중 가격 판매 . 그 작업자의 위치에서부터 조립 라인은 가격 값만 포함합니다. Java의 map

메소드는 Function 와 같이 (sale) -> sale을 취합니다. getPrice () 를 호출하고 스트림의 각 값에

Function

을 적용합니다. 따라서 map 메소드는 sale 객체의 수신 스트림을 가져 와서 price 값의 발신 스트림을 생성합니다. 네 번째 상자에서 다섯 번째 상자로 전환하는 작업자 방법 ( reduce

메서드)은 DVD 판매 가격을 합산합니다.Java의 reduce 메소드는 두 개의 매개 변수를 사용합니다. 첫 번째 매개 변수는 초기 값입니다. 위 이미지에서 초기 값은

0입니다. 0 999이다.

두 번째 매개 변수는 BinaryOperator 입니다.

위 이미지에서 메소드의 BinaryOperator

(price1, price2) -> price1 + price2 reduce 메소드 BinaryOperator

를 사용하여 들어오는 스트림의 값을 결합합니다. 초기 값은 모든 결합의 시작점 역할을합니다. 따라서

reduce 메소드는 두 가지 추가 작업을 수행합니다. reduce 메소드는 들어오는 스트림에서 두 개의 값을 추가합니다. 비교를 위해서 값이 3 인 스트림으로 메소드 reduce (10. 0, (value1, value2) -> value1 * value2) 를 호출하는 것을 상상해보십시오. 0 999, 999. 0 999 및 999이다. 0 999이다. 결과는 다음과 같습니다. reduce 메소드는 들어오는 스트림의 값을 곱합니다.

Google MapReduce 프로그래밍 모델에 대해 들어봤을 것입니다. 프로그래밍 모델 이름과 Java 메소드 이름

map

reduce 사이의 유사성은 우연이 아닙니다. 전체적으로 살펴보면 전체 조립품은 판매 된 DVD의 가격을 결정합니다. 위의 코드는 위의 첫 번째 이미지 인 스트림과 람다 식을 사용하는 완전한 프로그램을 포함합니다. import java. 본문. NumberFormat; import java. util. ArrayList; public class TallySales { public static void main (String [] args) { ArrayList 판매 = 새로운 ArrayList <> ();

NumberFormat currency = NumberFormat입니다. getCurrencyInstance ();

fillTheList (sales); 총계 = 매출액. stream () 필터 ((판매) -> 판매.getItem (). equals ("DVD")) . map ((sale) -> sale. getPrice ()) . reduce (0. 0, (price1, price2) -> price1 + price2);

시스템. 아웃. println (통화. 형식 (총));

}

정적 void fillTheList (ArrayList

판매) {

판매. 추가 (새 판매 ("DVD", 15. 00));

판매. 추가 (새 판매 ("Book", 12. 00)); 판매. 추가 (새 판매 ("DVD", 21. 00));

판매. 추가 (새 판매 ("CD", 5. 25));

}

}

코드에는 Java 8 이상이 필요합니다. IDE가 이전 버전의 Java 용으로 설정된 경우 IDE의 설정을 변경해야 할 수도 있습니다. 새로운 버전의 Java를 다운로드해야 할 수도 있습니다.

굵은 글씨는 하나의 큰 Java 할당 문입니다. 명령문의 오른쪽에는 일련의 메소드 호출이 들어 있습니다. 각 메서드 호출은 개체를 반환하며 이러한 각 개체는 다음 메서드 호출에서 점 앞에 오는 개체입니다. 그것이 조립 라인을 구성하는 방법입니다.

예를 들어, 굵은 체 코드의 시작 부분에서

sales

라는 이름은

ArrayList 객체를 참조합니다. 각

ArrayList

객체에는

스트림

메서드가 있습니다. 위 코드에서

판매. stream ()

ArrayList

객체의

stream 메서드에 대한 호출입니다. stream 메소드는 Java Stream 클래스의 인스턴스를 반환합니다. (놀랍지 만!) 그래서 판매. stream () Stream 객체를 참조합니다. 모든 DVD 판매. 모든 Stream 객체는 필터 메소드를가집니다. 그래서

판매. 흐름(). filter ((sale) -> sale.getItem (). equals ("DVD")) ⁣Stream 객체의 필터 메서드에 대한 호출입니다. 패턴이 계속됩니다.

Stream

객체의 map 메소드는 또 다른 Stream 객체 - 가격이 포함 된

Stream

객체를 반환합니다. 각 DVD 판매 가격 책정. 가격의 스트림 에는

값 - DVD 가격의 합계를 산출하는 축소 방법을 적용합니다. 모든 DVD 판매의 총 가격 가져 오기.

자바에서 스트림과 람다 식을 사용하기

편집자의 선택

Photoshop Elements 11 - Stone

Photoshop Elements 11 - Stone

을 사용하여 Stone Out을 조각하는 방법 Photoshop Elements 11의 도구를 입력하여 텍스트와 같은 모양의 선택 영역을 만든 다음 이미지 자체를 해당 유형의 채우기로 사용합니다. 예를 들어 꽃 테마 웹 페이지를 만드는 경우 꽃 그림을 텍스트 채우기로 사용할 수 있습니다. 유형 선택을 사용하면 모든 부분을 잘라낼 수 있습니다.

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

여러 파일에 공통적으로 적용 할 편집 기능을 사용하면 Photoshop Elements에서 이러한 변경 사항을 일괄 적으로 처리 할 수 ​​있습니다. 단일 메뉴 명령을 사용하여 파일 형식을 변경하고 파일 속성을 변경하고 공통 파일 기본 이름을 추가 할 수 있습니다. 파일 이름 바꾸기는 내보내기 명령의 일부일 수도 있고 사용할 수도 있습니다.

편집자의 선택

승마 2012 런던 하계 올림픽 - 인형

승마 2012 런던 하계 올림픽 - 인형

승마 (말의 화려한 이름) 경쟁 런던 2012 하계 올림픽은 조련사, 이벤트 및 점프의 세 가지 분야로 구성됩니다. 각 분야는 팀과 개인 메달을위한 기회를 제공합니다. 대회는 7 월 28 일부터 31 일까지 개최됩니다. 조련사 경연 대회는 8 월 2 일부터 9 일까지 개최됩니다. 점프 대회는 ...

동계 올림픽에서의 자유형 스키 - 인형

동계 올림픽에서의 자유형 스키 - 인형

프리 스타일 스키는 동계 올림픽의 X 게임 이벤트 중 하나입니다. . 자유형 스키에서는 경쟁자가 언덕 꼭대기에서 바닥까지 다양한 행사를 수행합니다. 프리 스타일 스키는 기술 스키의 가장 중요한 부분을 차지하며 스노우 보드에서 트릭을 만들어내는 기술과 결합되어 있습니다.

필드 2012 런던 하계 올림픽의 이벤트 - 인형

필드 2012 런던 하계 올림픽의 이벤트 - 인형

스프린트, 릴레이 및 도로 경주 이외에도 2012 런던 하계 올림픽 육상 경기에는 점프 및 던지기 경기가 포함됩니다. 남자와 여자는 높은 점프, 긴 점프, 트리플 점프, 장대 높이뛰기 등의 4 가지 점프 이벤트와 총구, 원반, 창 던지기 및 망치와 같은 네 가지 투구 이벤트에서 경쟁합니다. 필드 이벤트 ...

편집자의 선택

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

엑셀 2016의 액션. Range 객체는 수십 개의 메소드를 가지고 있지만, 이들 중 대부분은 필요하지 않습니다. 여기서는 가장 일반적으로 사용되는 Range 객체 메소드를 찾습니다. Select 메서드 Select 메서드를 사용하여 셀 범위를 선택합니다. 다음 문은 ...

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자는 목표 탐색 데이터 탭의 가정 분석 섹션에 데이터 테이블이 있습니다. 다른 유용한 도구와 함께 그룹화하면 시나리오 관리자가 중요한 도구임을 믿게 될 것입니다. 그러나 유용한 이름과 좋은 회사가 있음에도 불구하고 ...

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

Power Query를 함께 사용하면 관리 및 유지 보수가 쉬운보고 모델을 만들 수 있습니다. 보고 모델은보고 메커니즘이 구축되는 기초를 제공합니다. 데이터를 가져오고, 변환하고, 모양을 만들고, 집계하는보고 프로세스를 작성하면 본질적으로보고 모델을 구축하게됩니다. 잘못 작성하는 중 ...