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

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

비디오: [자바 중급] 람다식 기본문법 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 판매의 총 가격 가져 오기.

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

편집자의 선택

플립 비디오 인형 치트 시트 - 인형

플립 비디오 인형 치트 시트 - 인형

플립 비디오 캠코더는 가장 사용하기 쉬운 캠코더입니다. 세계. 플립 비디오를 사용하면 비디오를 가리키고 촬영 한 다음 컴퓨터로 비디오를 복사 할 수 있습니다. 몇 번의 클릭 후, 당신은 Facebook, MySpace 및 YouTube에서 귀하의 작품을 과시하고 있습니다. Flip의 버튼을 해독함으로써 비디오를 고통없이 촬영하는 방법을 찾으십시오. 알아보기 ...

귀하의 디지털 필름에 대한 개인 상영 - 인형

귀하의 디지털 필름에 대한 개인 상영 - 인형

오늘, DSLR 필름 심사. HD가 장착 된 정교한 대형 스크린 TV는 여러 스피커의 서라운드 사운드 스테레오와 함께 아주 좋은 간식을 제공합니다. 따라서 영화 밤을 장소에서 쉽게 주최 할 수 있으며 영화관에 갈 수도 있습니다. ...

디지털 영화에 정적 제목을 추가하는 방법 - 인형

디지털 영화에 정적 제목을 추가하는 방법 - 인형

초연 요소는 다양한 선택을 제공합니다 DSLR 영화의 타이틀 선택 항목, 하위 3 분의 1 로케이터 정보. 로케이터 정보는 뉴스 세그먼트 및 다큐멘터리에서 장면의 사람이나 장소를 설명하는 데 사용되는 ID와 같습니다. 사람의 경우 이름과 설명이라는 두 줄로 구성됩니다. 예를 들어, Charles Dickens / Writer, ...

편집자의 선택

관계 속의 분노를 다루는 - 인형

관계 속의 분노를 다루는 - 인형

우리 모두는 때때로 파트너들과 화를 낸다. 분노가 당신과 당신의 관계에 미치는 파괴적인 영향을 최소화하는 데 도움이되는 다음 요령을 시도하십시오. 당신이 분노의 징후를 처음 알기 시작할 때, 당신의 파트너에게 무슨 일이 일어나는지 물어보십시오. 화가 난 사람을 상처 입히려 고합니다.

자폐증 진단의 영향 - 인형

자폐증 진단의 영향 - 인형

자폐아를 찾는 것이 매우 어렵습니다. 앞으로의 길은 쉬울 것이라고 아무도 말할 수 없습니다. 자녀의 생년월일과 본인의 생년월일에 관한 스크립트를 다시 작성해야 할 수도 있습니다. 당신은 지금 다루어야 할 새로운 쟁점, 압박 및 결정들을 가지고 있습니다. 그리고 주변 사람들은 ...

당신이 종속인지 결정하기 - 인형

당신이 종속인지 결정하기 - 인형

다음 증상 목록에서 확인하십시오. 당신은 모두가 공손 할 필요는 없으며, 코펜던트의 심각성 정도가 있습니다. 치료를하지 않으면 시간이 지남에 따라 코드 종속성이 악화되지만 도움을 받아 복구 할 수 있고 작업에서 훨씬 더 효과적 일 수 있습니다 ...

편집자의 선택

짧은 명상 묵상 시도 - 인형

짧은 명상 묵상 시도 - 인형

당신의 마음을 집중할 수있는 능력은 마음 챙김 명상을 통해 가장 강력하게 개발됩니다. Mindfulness 명상 중 하나는 호흡의 mindfulness입니다. 이것은 숨을 의식적으로 인식하는 것입니다. 명상을 스스로 시도하려면 다음 단계를 따르십시오. 자신의 호흡 감을 알아야합니다. 변경할 필요가 없습니다 ...

마음가짐의 세 측면 - 인형

마음가짐의 세 측면 - 인형

마음가짐은 세 가지 측면으로 주의 깊은 인식. 이 목록을 인쇄하여 핀이 무엇인지 생각 나게하십시오. 의도 - 당신의 의도는 당신이 마음가짐을 연습함으로써 얻고 자하는 것입니다. 스트레스를 줄이고 감정적 인 균형을 유지하거나 발견 할 수 있습니다.

다른 명상을 시도하십시오 - 인형

다른 명상을 시도하십시오 - 인형

명상 확장이라는 인식은 명상 확장의 중심에 있습니다. Mindfulness 명상 연습. 앉는 자리는 수천 년 동안 명상을 위해 그리고 정당한 이유로 사용되었습니다. 어떻게 평소에 앉아 있니? 당신이 대부분의 사람들과 비슷하다면, 아마 의자 나 소파 뒤에 기대어집니다. 네가 괜찮다면 ...