Open HanaHww2 opened 1 year ago
예) 임의의 키와 Integer 값의 매핑을 관리하는 프로그램
Integer
키가 맵 안에 없다면 키와 숫자1을 매핑하고, 이미 있다면 기존 매핑 값을 증가시킴
map.merge(key, 1, (count, incr) -> count + incr);
Map
merge
count
incr
sum
위 코드에 람다 대신에 sum 메서드 참조를 전달하면 똑같은 결과를 더 보기 좋게 얻을 수 있다.
map.merge(key, 1, Integer::sum);
GoshThisClassNameIsHumongous
//메서드 참조를 할 때 service.execute(GoshThisClassNameIsHumongous::action); //람다 사용을 할 때 service.execute(() -> acation());
- 예) `java.util.function` 패키지의 제네릭 정적 팩터리 메서드인 `Function.identity()`를 사용하기보다는 똑같은 기능의 람다 `(x -> x)`를 직접 사용하는 게 더 짧고 명확함
람다만 거의 사용하고 메서드 참조를 별로 사용 안 해봤는데 담에 써봐야겠습니다
인스턴스 메서드 참조에 대한 예에 대해서 좀 더 알아봐야겠네요. 뭔가 개념이 확실하게 안오네요ㅠ
람다
예) 임의의 키와
Integer
값의 매핑을 관리하는 프로그램키가 맵 안에 없다면 키와 숫자1을 매핑하고, 이미 있다면 기존 매핑 값을 증가시킴
Map
에 추가된merge
메서드, 키, 값, 함수를 인수로 받아 수행하는 함수임메서드 참조
count
와incr
은 크게 할 일 없이 공간을 꽤 차지 함Integer
클래스(와 모든 기본 타입의 박싱 타입)는 이 람다와 기능이 같은 정적 메서드sum
을 제공하기 시작함위 코드에 람다 대신에
sum
메서드 참조를 전달하면 똑같은 결과를 더 보기 좋게 얻을 수 있다.람다, 메서드 참조의 사용
GoshThisClassNameIsHumongous
클래스 안에 있다고 할 때메서드 참조 유형
메서드 참조 정리표
유형 분류
결론