풀스택 백엔드 2026.05.21

syyu21b·2026년 5월 21일

풀스택 - 백엔드

목록 보기
20/49
post-thumbnail

[SECTION18. Java Stream 기초]

Java Stream = 컬렉션(List, Set 등)을 “선언형 방식”으로 처리하는 기능


  • 기존 방식 (for문):

예시:

package exam05.exam0521;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Exam01 {

    public static void main(String[] args) {

        List<Student> students = new ArrayList<>();

        students.add(new Student("유신영", 27, 100));
        students.add(new Student("아구몬", 28, 85));
        students.add(new Student("피카츄", 30, 98));

        for (Student s : students) {
            if (s.getScore() >= 90) {
                System.out.println(s.getName());
            }
        }
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getScore() >= 90) {
                System.out.println(students.get(i).getName());
            }
        }

        Iterator<Student> iter = students.iterator();

        while(iter.hasNext()) {
            System.out.println(iter.next().getName());
        }
    }
}

  • Stream 방식:

예시:

package exam05.exam0521;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Stream;

public class Exam01 {

    public static void main(String[] args) {

        List<Student> students = new ArrayList<>();

        students.add(new Student("파이썬", 20, 100));
        students.add(new Student("자바", 19, 88));
        students.add(new Student("한코딩", 33, 92));

        students.stream()
                .filter(s -> s.getScore() >= 90)
                .forEach(s -> System.out.println(s.getName()));
    }
}

기본 문법 구조

컬렉션.stream()
        .중간연산1()
        .중간연산2()
        .중간연산3()
        .최종연산();
  • 중간 연산: filter, map, sorted
  • 최종 연산: forEach, collect, count

1) 필터링 (filter)

List<Integer> numbers = List.of(1, 2, 3, 4, 5);

numbers.stream()
       .filter(n -> n % 2 == 0)
       .forEach(System.out::println);

출력:

2
4

2) 변환 (map)

numbers.stream()
       .map(n -> n * 2)
       .forEach(System.out::println);

출력:

2 4 6 8 10

3) 정렬 (sorted)

numbers.stream()
       .sorted()
       .forEach(System.out::println);

4) 개수 세기 (count)

long count = numbers.stream()
                    .filter(n -> n > 3)
                    .count();

System.out.println(count);

Stream 핵심 연산 정리

메서드설명
filter조건 필터
map변환
sorted정렬
count개수
collect / toList결과 수집
forEach반복 출력

문제 1

  • 1~20 숫자 중에서 짝수만 출력하세요.

정답 1


문제 2

  • 학생 리스트에서 점수 80 이상인 학생의 이름을 List로 만들어 출력하세요.

정답 2

0개의 댓글