일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Effective Java
- javascript value
- javascript native
- Redis
- 자바
- webstorm
- you don't know js
- javascript 값
- spring batch #스프링 배치 #스프링 배치 중복 실행
- 이펙티브 자바
- JetBrains
- Intellij
- javascript
- 자바스크립트
- ECMA2015
- Babel
- java
- java.util.LinkedHashMap cannot be cast
- ES6
- Spring
- CAS
- javascript type
- requestbody
- nodeJS
- webpack
- effectivejava
- Spring Session
- javascript 기초
- spring security
- 이펙티브자바
- Today
- Total
귀찮지만 만들어보자
반환 타입으로는 스트림보다 컬렉션이 낫다 스트림에서는 일반적인 컬렉션에서 지원하는 iteration(반복)을 제공하지 않는다.사용하지 말라는 가장 큰 이유가 이것이다.스트림 인터페이스는 iterable 인터페이스가 정의한 추상 메서드를 포함할 뿐만아니라,iterable 인터페이스가 정의한 방식대로 동작한다.그럼에도 불구하고 foreach로 스트림을 반복할 수 없는 이유는 스트림이 iterable을 상속받지 않아서다.그러니까 어설프게 스트림을 반환하는 것 보다는 컬렉션이 낫다스트림을 반복처리하도록 만드는 방법이 아예 없진 않지만 어지간하면 지양하자... 원소의 개수가 많다면(ex. 2^30-1) 처리할 수 있는 전용 컬렉션을 구현하거나,그것이 불가능 할 경우에 stream과 iterable 중 더 자연스러..
스트림에서는 부작용 없는 함수를 사용하라 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성 하는 부분이다.이전 단계의 결과를 받아서 처리하는 과정에서(method chaining, fluent api) 원활하게 진행되려면,스트림 연산에서 건내지는 함수 객체는 모두 부작용이 없어야 한다.스트림 api를 진행하면서 발생하는 예외에 대한 처리가 까다로운 편이니,연산을 진행하기전에 예외에 대한 처리 또한 미리 하는 것이 좋다. Map freq = new HashMap(); try (Stream words = new Scanner(file).tokens()) { words.forEach(word -> { freq.merge(word.toLowerCase(), 1L, Long::sum); }); }해당 예제에..
스트림은 주의해서 사용하라 스트림은 다량의 데이터 처리 작업을 돕고자 자바8에 추가되었다.이 API에서 제공하는 추상 개념중 핵심은 두 가지다.- 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 뜻한다 - 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념이다 스트림의 파이프라인은 소스 스트림으로 시작해서 종단 연산으로 끝난다. 그 사이에 하나 이상의 중간 연산이 있을 수 있다. 여기서 중간 연산은 스트림이 어떠한 형태로 변환한다. 최종적인 연산의 결과는 종단 연산에서 처리하게 된다.중간 연산이 여러개 존재할 경우에 종단연산에서 지연 평가된다. 사실은 이게 핵심이다! 잘 기억해두자 스트림 API는 메서드 연쇄를 지원하는 플루언트 API이다. 그니까 이어 붙이는게 가능하다.위에서 굵은 글씨..