Develop/JAVA

[Java] forEach 와 Stream API를 사용한 배열 처리

issuemaker99 2024. 9. 24. 18:30
728x90

Java에서는 배열이나 리스트와 같은 컬렉션 데이터를 처리할 때 반복문을 사용하는 것이 일반적입니다.

특히 Java 8 이후로는 forEach() 메서드와 Stream API를 통해 간결하고 함수형 스타일로 컬렉션을 처리할 수 있게 되었습니다.

1. forEach() 메서드

forEach() 메서드는 리스트의 모든 요소에 대해 특정 작업을 수행할 때 사용됩니다. 이를 통해 반복 작업을 간결하게 표현할 수 있습니다.

문법

list.forEach(element -> {
  // 각 요소에 대해 수행할 작업
});

 

  • element: 리스트의 각 요소를 나타냅니다.
  • ->: 람다 표현식으로 요소에 대해 수행할 작업을 정의합니다.

예시

1. 리스트의 모든 숫자에 2를 곱하기

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        numbers.forEach(num -> System.out.println(num * 2));
    }
}

 

이 예시에서는 numbers 리스트의 각 요소에 2를 곱한 값을 출력합니다. forEach() 메서드와 람다 표현식을 사용하여 간결하게 작업을 처리할 수 있습니다.

 

2. 객체 리스트에서 특정 속성 추출하기

import java.util.Arrays;
import java.util.List;

class User {
    String name;
    int age;

    User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
            new User("John", 30),
            new User("Jane", 25),
            new User("Doe", 22)
        );

        users.forEach(user -> System.out.println(user.name));
    }
}

 

이 예시에서는 User 객체 리스트에서 각 사용자 객체의 name 속성만을 출력합니다.


2. Stream API를 사용한 배열 처리

Stream API는 Java 8에서 도입된 강력한 기능으로, 배열이나 컬렉션을 처리하는 데 매우 유용합니다. map() 메서드를 사용하면 컬렉션의 각 요소를 변형하여 새로운 리스트를 만들 수 있습니다.

문법

list.stream()
    .map(element -> {
        // 각 요소에 대해 변형 작업 수행
    })
    .collect(Collectors.toList());
  • stream(): 리스트를 스트림으로 변환합니다.
  • map(): 각 요소에 대해 변형 작업을 수행합니다.
  • collect(): 결과를 새로운 리스트로 변환합니다.

예시

1. 리스트의 모든 숫자를 제곱하기

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

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

        List<Integer> squaredNumbers = numbers.stream()
                                              .map(num -> num * num)
                                              .collect(Collectors.toList());

        System.out.println(squaredNumbers); // [1, 4, 9, 16, 25]
    }
}

이 예시에서는 numbers 리스트의 각 요소를 제곱한 후, 그 결과를 새로운 리스트로 반환합니다.

 

2. 객체 리스트에서 특정 속성만 추출하기

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

class User {
    String name;
    int age;

    User(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
            new User("John", 30),
            new User("Jane", 25),
            new User("Doe", 22)
        );

        List<String> names = users.stream()
                                  .map(user -> user.name)
                                  .collect(Collectors.toList());

        System.out.println(names); // [John, Jane, Doe]
    }
}

이 예시에서는 User 객체 리스트에서 name 속성만을 추출하여 새로운 리스트로 변환합니다.


 

Java에서 forEach()와 Stream API는 컬렉션 데이터를 처리할 때 매우 간결하고 효율적인 방법을 제공합니다. 특히 Stream API의 map() 메서드를 통해 각 요소를 변환하고, 그 결과를 새로운 리스트로 손쉽게 만들 수 있습니다.

 

LIST