스트림

이규은·2021년 10월 22일
0

자바 I/O

목록 보기
1/7

스트림은 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다.
람다식으로 요소 처리 코드를 제공하여 코드가 좀 더 간결하게 할 수 있고 내부 반복자를 사용하므로 벙렬처리가 쉽다.

스트림 사용법

배열스트림

// int 배열
int[] array = {1, 2, 3, 4, 5};
IntStream intStream = Arrays.stream(array);
intStream.forEach(a -> System.out.println("a = " + a));

// String 배열
String[] strArray = { "김철수", "이철수", "박철수"};
Stream<String> strStream = Arrays.stream(strArray);
strStream.forEach(a -> System.out.println("a = " + a));

컬켈션 스트림

interface Collection<E> extends Iterable<E> {
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }
}

public class CollectionStream {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("a", "b", "c");
        Stream<String> stream = list.stream();
        Stream<String> parallelStream = list.parallelStream();
    }
}

컬렉션 타입의 경우 인터페이스에 추가된 디폴트 메소드 stream을 이용해서 스트림을 만들 수 있다.

비어 있는 스트림

public Stream<String> streamOf(List<String> list) {
    return list == null || list.isEmpty() ? Stream.empty() : list.stream();
}

클래스에서 스트림 활용

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

class Student {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }
}

public class stream {
    public static void main(String[] args) {
        List<Student> studentList = Arrays.asList(
                new Student("김김김", 80),
                new Student("이이이", 90),
                new Student("박박박", 60)
        );

        Stream<Student> stream = studentList.stream();
        stream.forEach(s -> System.out.println("이름 = " + s.getName()));
    }
}
profile
안녕하세요

0개의 댓글