2022-05-24 데일리 회고 19일차

Sung-min Seo·2022년 5월 25일
0

🥕 스트림(Stream)

스트림은 Java 8 부터 람다를 활용할수 있게 해주는 기술이다. 배열이나 컬렉션에서 정보를 받아 여러가지 표준화된 방법들을 이용해 데이터를 가공할수 있다. 여기서 중요한점은 스트림은 데이터를 받아오는 입장이기 때문에 원본 데이터를 바꾸지 못한다는 겟 이다.
컬렉션 같은 경우 데이터를 가공하기 위해선 외부 반복자(iterator, for, while 등등) 을 사용하여 정보를 하나씩 들추는 반면 스트림에서는 내부 반복자를 이용하여 데이터를 보다 효율적으로 가공할수 있게된다.


스트림은 다음과 같은 단계를 가진다.

    + 생성하기 : 스트림 인스턴스 생성
    + 가공하기 : 필터링 및 맵핑등 데이터를 가공하여 원하는 결과물을 만들어가는 과정
    + 결과 만들기 : 데이터 가공의 최종 단계

이러한 과정을 보통 파이프 라인이라고 칭한다.

⭐자주쓰는 Stream method 종류

스트림 생성자
    + stream() : 기본적인 컬렉션 객체들을 소스로 하는 스트림을 반환한다.
    + Streams.of() / Arrays.stream : 배열 값을 소스로 하는 스트림을 반환한다. 기본적으로 주어지는 가변 인자들을 배열의 객체로 인식한다.
    + Int/Long/DoubleStream : 원시 자료형 값들을 반환받는 스트림 타입이다.
스트림 가공
    - 필터링
        + filter() : Stream의 가공중 주어진 조건에 맞는 데이터를 받아 컬렉션을 만들어주는 메서드이다. 필터링의 반환 값이 참일 경우 요소들을 가져온다.
        + distinct() : Stream의 가공 방법중 중복되는 데이터가 있을시 중복을 제거해주는 메서드이다.
    - 매핑
        + map() : 스트림에서 주어진 값들이 특정한 조건에 따라 가공된 후 새로운 스트림에 담기게 해주는 메서드이다.
        + flatmap() : 중첩되는 구조를 제거하고 모든 원소를 단일 원소 스트림으로 반환 할수 있다. 특히 초기 스트림이 배열 형태일때 유용하다.
    + sorted() : 아무런 인자 없이 호출할시 오름차순으로 정렬되며 다른 정렬과 마찬가지로 Comparator를 사용한다.
스트림 최종 연산
    + forEach() : 스트림의 모든 값을 하나씩 연산해주는 메서드이다.
    + match() : 결과 값이 주어진 조건들과 일치 하는지 boolean 값으로 반환해준다.
    + collect() : 컬렉터 타입의 인자를 받아서 값을 처리해준다. 가공된 데이터의 값을 컬렉터에서 사용된 메서드를 기준으로 받아온다.

Java 스트림 Stream (1) 총정리

Stream In Java

자바 map 메서드와 flatMap 메서드의 차이

⭐ 오늘의 소감

드디어 스트림 정리를 시작했다. 연습 문제를 풀때 느낀거지만, 별로 사용해본적이 없는 람다 형태의 코딩이라서 그런지 많이 어색하다. 아직 코딩 실력이 많이 부족해서 그런가... 페어분의 도움으로 간신히 문제를 다 풀긴 했지만, 많은 연습이 필요하다. 많은 스트림 내용중 우선 연습문제에서 활용했던 메서드 중점으로 정리를 해봤다. 아직 정리 못한 내용도 많고 짧게만 정리한 것들도 많아 컬렉션과 같이 주말에 시간이 되면 다시 정리를 해야할 것 같다.

profile
매일 문제 3개 이상 풀기!!

0개의 댓글