Java - 입출력 (I/O) / 람다식

m0ng·2025년 6월 17일

스트림 개념

Stream은 데이터를 연속적으로 읽고 쓰는 구조이며 바이트와 문자 단위로 나뉩니다.

바이트 기반

    -InputStream / OutputStream

    -FileInputStream / FileOutputStream

문자 기반

    -Reader / Writer

    -FileReader / FileWriter

    -BufferedReader / BufferedWriter

Scanner vs BufferedReader

편의성성능
ScannerBufferedReader
쉬움어려움
느림빠름

파일 복사

try (FileInputStream in = new FileInputStream("a.txt");
     FileOutputStream out = new FileOutputStream("b.txt")) {
    byte[] buffer = new byte[1024];
    int length;
    while ((length = in.read(buffer)) > 0) {
        out.write(buffer, 0, length);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Java 람다식과 스트림

람다식 개요

람다식은 익명 함수로서 Java 8에 도입된 함수형 프로그래밍 스타일입니다.

List<String> names = Arrays.asList("Kim", "Lee", "Park");
names.forEach(name -> System.out.println(name));

함수형 인터페이스

-Predicate<T>: 조건식 (boolean 반환)

-Function<T,R>: 입력 T → 결과 R

-Consumer<T>: T 소비, void 반환

Stream API

List<String> names = Arrays.asList("Kim", "Lee", "Park");
List<String> filtered = names.stream()
    .filter(name -> name.startsWith("K"))
    .collect(Collectors.toList());

고급 기능

-map, flatMap

-sorted, distinct

-reduce (누적 연산)

병렬 스트림

list.parallelStream().forEach(System.out::println);

0개의 댓글