유용한 람다식 함수들

자바 8 부터 람다식과 함께 사용하던 코드를 더 간결하고 강력하게 만들 수 있는 함수형 인터페이스들이 추가됐습니다.

따라서 대표적인 함수형 메서드를 정리해 보았습니다.

미리 들어가기에 앞서 람다 Stream 사용 시 단순 for 문 혹은 while 문 보다 성능이 떨어집니다.
또한 불필요하게 너무 사용하게 되면 오히려 가독성을 떨어트릴 수 있습니다.

일단 Stream 이란

먼저 유용한 람다식 함수들을 배우기 전에 Stream 이란 무엇인지 간단하게 설명하겠습니다.

Stream 은 데이터(리스트, 배열 등) 를 한줄(Stream)로 흘려보내면서 필요한 작업(변환,필터링등) 을 수행하는 기능입니다.

쉽게 말해, 데이터를 하나씩 순서대로 흘려보내면서 변형하는 파이프라인 같은 것입니다.

데이터 자체를 변경하지 않고, 가공해서 새로운 결과물을 만들어 냅니다.

 

map

모든 요소를 변환해서 새로운 값으로 만들고 싶을 때 사용합니다.

Stream 과 함께 사용해야 합니다.

 

 

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

public class MapExample {
    public static void main(String[] args) {
        List<Integer> scores = Arrays.asList(70, 80, 90);

        // 모든 점수를 5점씩 증가시키기
        List<Integer> newScores = scores.stream()
                                        .map(score -> score + 5)
                                        .collect(Collectors.toList());

        System.out.println(newScores);
    }
}

 

실행결과

[75, 85, 95]

 

filter

특정 조건을 만족하는 요소만 선택할 때 사용합니다.

 

80점 이상인 점수만 출력

scores.stream()
      .filter(score -> score >= 80)
      .forEach(System.out::println);

 

실행결과

80
90

 

sorted

리스트를 오름차순 또는 내림차순으로 정렬할 때 사용합니다.

scores.stream()
      .sorted()  // 오름차순 정렬
      .forEach(System.out::println);

 

실행 결과

70
80
90

 

reduce

리스트의 모든 요소를 하나의 값으로 합칠 때 사용합니다.

 

모든 점수의 합 구하기

int total = scores.stream()
                  .reduce(0, (a, b) -> a + b);
System.out.println("총점: " + total);

 

실행결과

총점: 240

 

'Java' 카테고리의 다른 글

ConcurrentHashMap 에 대하여  (3) 2025.06.06
자바의 반복문 종류  (1) 2025.02.04
Java 의 Call by Value, Call by Reference  (1) 2025.01.06
간단한 에러 출력 방법과 문제점  (0) 2025.01.02
자바의 람다 표현식  (1) 2024.12.26