[ java ] Stream 기본 개념

2024. 9. 23. 19:28·JAVA

📌 Stream 이란 ? 

stream은 데이터의 흐름을 뜻한다. Stream은 데이터를 순차적 또는 병렬적으로 처리하는 방식이며, 데이터의 처리에 초점을 둔다. 여기서 데이터의 처리란 원하는 데이터만 처리할 수 있도록 filter 역할을 해주는 연산자들을 뜻한다고 생각하면 된다. 

데이터의 소스를 추상화 하고 데이터를 다루는데 유용한 메서드를 정의해 놓은 것

🔻 Stream의 연산 

Stream에는 중간 연산자,최종 연산자 2가지 연산이 존재한다. 

  • 중간 연산자 : filter(), map(), sorted() 등과 같이 데이터를 처리하는 역할한다. 

filter(Predicate) : 조건에 맞는 요소만 필터링(= 조건에 안맞는 요소 버림)

map(Function) : 요소를 변환 (예: String을 Integer로 변환)

sorted() : 스트림의 요소를 정렬

distinct() : 중복 요소 제거

 

  • 최종 연산자 : collect(), toArray() 등으로, 스트림이 최종적으로 처리되는 시점을 말한다.  

collect() : 스트림의 요소들을 모아서 리스트, 집합, 맵 등의 자료구조로 변환

toArray() : 스트림의 요소들을 배열로 변환하는 최종 연산자

 

 

 

ArrayList나 다른 Collection은 바로 Stream을 생성할 수 있다. 

List<Integer> list = Arrays.asList(1, 2, 3);
Stream<Integer> stream = list.stream();

 

배열은 직접 stream() 메서드를 제공하지 않으므로, 변환해야한다. 

int[] array = {1, 2, 3, 4, 5};
IntStream intStream = Arrays.stream(array); 

IntStream은 기본 타입 int를 다루는 데 최적화된 Stream

 

1번 : Arrays.stream(배열).mapToInt(Integer::parseInt).toArray() 이때 배열 => string[]

-> 배열로 바꿈 

 

 

2번 : Arrays.stream(배열).collect(Collectors.toList()) 이때 배열 => string[]

-> List로 바꿈 

 

 

참고 블로그 : https://steady-coding.tistory.com/313

'JAVA' 카테고리의 다른 글

[ java ] 조건문  (0) 2024.12.03
[ java ] 반복문  (0) 2024.12.03
[ java ] 클래스 변수, 인스턴스 변수, 지역변수  (0) 2024.11.14
[ java ] 제네릭(generic)  (0) 2024.10.17
[ java ] Immutable Object(불변 객체)  (0) 2024.09.23
'JAVA' 카테고리의 다른 글
  • [ java ] 반복문
  • [ java ] 클래스 변수, 인스턴스 변수, 지역변수
  • [ java ] 제네릭(generic)
  • [ java ] Immutable Object(불변 객체)
Adose
Adose
  • Adose
    도즈의 개발 블로그
    Adose
  • 전체
    오늘
    어제
    • 분류 전체보기 (205)
      • JAVA (22)
      • 스프링 | 스프링 부트 (30)
        • 스프링 시큐리티 (1)
        • 채팅 (1)
      • 스프링 프로젝트 (5)
        • JDBC - 은행앱 구현 (1)
        • Spring Boot - 독서 블로그 프로젝트 (3)
        • 개인 프로젝트 - CoreBrief (1)
      • 가상화 기술 (20)
      • Git (1)
      • 코딩테스트 (38)
        • 프로그래머스 입문 (68)
      • AWS (1)
      • 데이터베이스 (0)
      • CS 공부 (4)
      • 알고리즘, 자료구조 (5)
      • 우테코 프리코스 (7)
      • 트러블 슈팅 (1)
      • 프론트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    코딩테스트
    springdatajdbc
    LV1
    Java
    프로그래머스
    멋쟁이사자처럼백엔드
    GIT
    LV0
    스프링
    자바
    jdbc
    test
    스프링부트
    LV2
    멋쟁이사자처럼
    프론트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Adose
[ java ] Stream 기본 개념
상단으로

티스토리툴바