자바

    [자바 인 액션] 6. 스트림 데이터 수집

    스트림 최종 연산 최종적으로 중간연산을 통해 구성된 파이프라인을 연산하여 데이터 들을 소비하는 동작 [컬렉터] Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정 [고급 리듀싱 컬렉터] Collectors 클래스에서 제공하는 여러 팩토리 메서드 기능이 있다. 스트림 요소를 하나의 값으로 리듀스하고 요약 : 리스트에서 총합 등 요소 그룹화 : 결과를 각각 그룹화 요소 분할 : Predicate를 사용한 분할을 사용한다. 갯수를 세는 컬렉터 long test = transactions.stream().collect(Collectors.counting()); long test2 = transactions.stream().count(); 최댓값 검색 Optional notCalorie..

    [자바 인 액션] 5. 스트림 활용

    스트림 활용 1. Filtering T -> boolean 고유 요소 필터링 : distinct List dishes = menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList()); List dishes2 = menu.stream() .filter(dish -> dish.getFat() < 400) .distinct() .collect(Collectors.toList()); filter는 기본적으로 반환값이 boolean이다. menu.stream(): 컬렉션을 스트림으로 변환 filter(Dish::isVegetarian): dish클래스의 isVegetarian메서드를 메서드 참조하여 해당 조건을 필터링, 반환 = Stream(Di..

    [자바 인 액션] 4. 스트림

    스트림 스트림 컬렉션 데이터를 처리하는 하나의 파이프라인 SQL과 같이 반복문 없이 조건만으로 구현을 한다. 멀티코어를 활용한 컬렉션 요쇼 병렬처리 가독성이 좋아진다. filter, sorted, map, collect같은 여러 빌딩 블록 연산을 통해 파이프라인 구축이 가능하다. 데이터 처리 연산을 지원하도록 소스에서 추출된 연속 요소 연속된 요소: 컬렉션과 같은 연속된 데이터를 계산 소스: 제공받은 데이터들을 소비하며 데이터 소스의 순서를 유지한다. 데이터 처리 연산: 데이터베이스와 비슷한 연산을 가진다. 스트림 구조 파이프라이닝: 스트림 연산은 각 스트림 연산을 연결하여 파이프라인을 구성 가능 내부반복: 컬렉션과 달리 스트림은 내부 반복을 지원한다. [스트림 vs 컬렉션] 가장 큰 차이 = 데이터를 ..

    [자바 인 액션] 3. 람다 표현식

    람다 익명 클래스로 다양한 동작을 구현할 수 있지만, 인터페이스를 구현하고 해당 인터페이스를 상속받는 클래스를 만들고 사용하던지 아님 익명 클래스를 사용해야 했습니다. [람다의 특징] 익명 클래스를 단순화 한 것 파라미터 리스트, 바디, 반환형식, 예외리스트를 가질 수 있다. 익명성 : 메서드의 이름이 없다. 함수 : 특정 클래스에 종속되지 않는다. 전달 : 람다 표현식 자체를 메서드 인수로 전달하거나 변수로 저장 가능 간결성 : 간결하게 코드 가능 [함수 디스크립터] 함수의 선언에서 반환타입 함수이름 (파라미터 타입, 파라미터 타입2); 와 같이 지정할 수 있다. 이와 같이 람다도 이러한 타입을 부를 수 있는데 바로 함수 디스크립터이다. () -> void (Apple, Apple) -> int (in..