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() 메서드를 통해 각 요소를 변환하고, 그 결과를 새로운 리스트로 손쉽게 만들 수 있습니다.
'Develop > JAVA' 카테고리의 다른 글
[Java] spring security 설정 csrf 특정 url 예외 처리 (6) | 2024.09.26 |
---|---|
[Java] GET POST 메서드 REST API 호출 서비스 만들기 (6) | 2024.09.25 |
[Spring Framework] Spring boot 2개 실행했을 때 로그인 세션 끊기는 현상 해결하기 (8) | 2024.09.14 |
[JAVA] dto model 특정값 중복 제거 합치기 stream filter distinct sort (11) | 2024.09.10 |
[JAVA] QR코드 생성 후 서버에 이미지로 저장 (2) | 2024.08.30 |