Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

charminseok

[Java] Stream 본문

JAVA

[Java] Stream

charminseok 2022. 9. 28. 20:34

객체지향 언어인 자바는 함수형 프로그래밍을 지원하기위해 자바8부터 stream API, 람다식 등이 추가되었다. Stream API를 사용하면 기존 for문을 사용하지 않고 함수를 사용해 컬렉션 데이터를 처리할 수 있다. 

 

String[] words = {"java", "python", "javascript", "C++"};

// 1. 4글자 이상 단어 출력
for (String s : words) {
    if (s.length() > 4) {
        System.out.println(s);
    }
}

// 2. 정렬 후 출력
Arrays.sort(words);
for (String s : words) {
    System.out.println(s);
}

위의 코드처럼 for문을 사용하는 것보다 더 간단하고 가독성있게 작성할 수 있고 원본 데이터(words)를 변형하지 않고 로직을 수행할 수 있다.

 

String[] words = {"java", "python", "javascript", "C++"};

// 1. 4글자 이상 단어 출력
Arrays.stream(words).filter(str -> str.length() > 4).forEach(System.out::println);

// 2. 정렬 후 출력
Arrays.stream(words).sorted().forEach(System.out::println);

 

Stream API는 원본 데이터를 복사해 stream을 생성한다. 그렇기 때문에 정렬이나 필터링을 하더라도 원본 데이터는 유지하면서 stream 내부에서 작업을 수행할 수 있는 것이다.

 

스트림은 크게 세가지로 작업한다.

1. 생성하기

  • 배열 / 컬렉션 / 빈 스트림
  • Stream.builder() / Stream.generate() / Stream.iterate()
  • 기본 타입형 / String / 파일 스트림
  • 병렬 스트림 / 스트림 연결하기

2. 가공하기

  • Filtering
  • Mapping
  • Sorting
  • Iterating

3. 결과

  • Calculating
  • Reduction
  • Collecting
  • Matching
  • Iterating

'JAVA' 카테고리의 다른 글

[Java Test] 테스트  (0) 2022.09.03
[Java] concurrentHashMap  (0) 2022.05.01
[Java] 자바 동기화 컬렉션(Synchronized Collection)  (0) 2022.04.25
[Java] 동등성, 동일성  (0) 2022.04.11
[Java] 싱글톤  (0) 2022.04.10