본문 바로가기

자바815

Java - 스트림(Stream) 작업흐름 작업 흐름 스트림을 생성한다. 초기 스트림을 다른 스트림으로 변환하는 중간 연산(intermediate operation)을 지정한다. 여러 단계가 될 수도 있다. (최종|종료) 연산(terminal operation)을 적용해서 결과를 산출한다. 종료 연산은 앞에서 지정한 지연 연산이 실행되게 한다. 이 이후로는 더 이상 해당 스트림을 사용할 수 없다. 2017. 3. 4.
Java - 스트림(Stream)과 컬렉션 스트림과 컬렉션 데이터를 언제 계산하느냐가 컬렉션과 스트림의 가장 큰 차이 컬렉션은 현재 자료구조가 포함하는 모든 값을 메모리에 저장하는 자료구조다. 즉, 컬렉션의 모든 요소는 컬렉션에 추가하기 전에 계산되어야 한다. 요소의 추가, 삭제가 가능 반면 스트림은 이론적으로 요청할 때만 요소를 계산하는 고정된 자료구조다.스트림은 한번만 탐색할 수 있다. 특징 정리 읽기만 가능하고 기존 데이터를 변경하지 않는 다. 일회용이다. 최종연산 후 다시 값을 받으려면 스트림을 다시 생성해야 한다. 최종연산이 나오기 전까지 연산이 수행되지 않는 다. 지연연산 내부 반복으로 처리한다. 병렬로 처리한다. 2017. 3. 3.
Java - 스트림(Stream) 스트림이란 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소' 스트림은 컬렉션 보다 개념적으로 높은 수준의 데이터 뷰 역할을 하며, 이를 이용하면 좀 더 직관적으로 계산을 명시할 수 있다. 선언형으로 코드를 구현할 수 있다. 즉 루프와 if 조건문 등의 제어 블록을 사용해서 어떻게 구현할 지 지정할 필요 없이 '저칼로리의 요리만 선택하라' 같은 동작의 수행을 지정할 수 있다. 루프에서는 연산 순서를 자세히 작성해야 하지만, 스트림은 결과만 맞으면 원하는 방식으로 연산을 스케줄링 할 수 있다. 메서드 이름을 보면 코드가 무엇을 의도하는 지 바로 알 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 병렬로 처리할 수 있다. 데이터의 소스와 프로퍼티를 지정하면 스트림 라이브러리.. 2017. 3. 2.
Java - 함수형 인터페이스(Predicate) 합성 and(), or(), negate()로 두 Predicate를 하나로 합성할 수 있다. Predicate p = i -> i i i%2 == 0; Predicate notP = p.negate(); // i >= 10 Predicate all = notP.and(q).or(r); // 10 2017. 3. 1.