stream api
[Effective Java] 7장 람다와 스트림
[Effective Java] 7장 람다와 스트림
2020.02.16[Java] lambda 기본 개념 [Java] Stream API 노트 아이템 42. 익명 클래스보다는 람다를 사용하라 람다의 모든 매개변수 타입은 생략한다. 타입을 명시해야 코드가 더 명확한 경우만 명시 컴파일러가 "타입을 알 수 없다"는 오류를 낼 때만 명시 단, 람다 코드로 명확히 동작을 알 수 없거나 코드 줄 수가 많아지면 람다를 쓰지 않는게 좋다. 람다는 이름도 없고 문서화도 못하기 때문. 함수 객체가 자기 자신을 참조해야 한다면 반드시 익명 클래스를 써야 한다. 람다에서의 `` this``는 바깥 인스턴스를 가리키는 반면, 익명 클래스에서의 `` this``는 인스턴스 자신을 가리킨다. 아이템 43. 람다보다는 메서드 참조를 사용하라 가독성 측면에서 하는 얘기인데, 꼭 메서드 참조가 깔끔하리..
[Kotlin] stream API / 시퀀스(Sequence)
[Kotlin] stream API / 시퀀스(Sequence)
2017.12.04기본 filter, map 등은 인라인 함수로 정의되어 있어 알아서 인라이닝되므로 성능 신경쓰지말고 그냥 사용하면 된다. 연쇄해서 사용하는 경우 연산의 순서가 성능에 영향을 줄 수 있기 때문에 고려해야 한다. 보통 ``kt filter()``를 먼저 적용해 추리는게 도움이 되고, 메서드 체이닝 시 앞쪽에서 부터 적용되기 때문에 ``kt filter()``를 먼저 써주는게 좋다. ...고 하는데, 지연평가 기본적으로는 안되는게 맞다. collection에서 그냥 map, filter 사용 시 모든 원소에 대해 적용하고 다음으로 넘기는 방식. asSequence() 로 시퀀스 변경 후 map, filter 사용 시 lazy evaluation 됨. lazy eval && take, takeLast가 지원되는..
[Java] Stream API 노트
[Java] Stream API 노트
2017.03.09Stream API [Languages & Frameworks/Kotlin Java] - [Effective Java] 7장 람다와 스트림 생성, 중개 연산, 최종 연산까지 정리가 잘 되어 있으니 넘기면서 볼 것. 10 subtle mistakes when using the streams api http://iloveulhj.github.io/posts/java/java-stream-api.html 항상 stream이 나이스한건 아니다. for가 더 나이스한 경우가 분명히 존재한다. 구구절절 적기는 좀 애매한데... 아무튼 코드 짜다 보면 느껴질 때가 있음. stream API의 최종 연산 1. 요소의 출력 : forEach(), forEachOrdered() {병렬연산으로 순서 틀어질 때} 2. 요소의..