Notice
Recent Posts
Recent Comments
Link
SeouliteLab
[Java/자바] 람다식과 flatMap() 메서드 활용하기 본문
자바에서는 람다식과 함께 flatMap() 메서드를 사용하여 중첩된 컬렉션의 요소를 평면화할 수 있습니다. flatMap() 메서드는 중첩된 구조를 하나의 스트림으로 변환하여 처리할 때 유용합니다. 아래에서는 람다식과 flatMap() 메서드를 활용한 여러 예제를 살펴보겠습니다.
1. 중첩 리스트의 요소 평면화하기
람다식과 flatMap() 메서드를 사용하여 중첩된 리스트의 요소를 평면화하는 예제입니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FlatMapExample {
public static void main(String[] args) {
List> nestedList = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5, 6),
Arrays.asList(7, 8, 9)
);
// 중첩 리스트의 요소를 평면화
List flatList = nestedList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println("평면화된 리스트: " + flatList);
}
}
2. 문자열 리스트의 각 요소를 문자로 분해하기
람다식과 flatMap() 메서드를 사용하여 문자열 리스트의 각 요소를 문자로 분해하는 예제입니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FlatMapExample {
public static void main(String[] args) {
List strings = Arrays.asList("hello", "world");
// 문자열 리스트의 각 요소를 문자로 분해
List characters = strings.stream()
.flatMap(str -> Arrays.stream(str.split("")))
.collect(Collectors.toList());
System.out.println("문자로 분해된 리스트: " + characters);
}
}
3. 객체 리스트의 각 요소에서 필드 값 추출하기
람다식과 flatMap() 메서드를 사용하여 객체 리스트의 각 요소에서 필드 값을 추출하는 예제입니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private List hobbies;
public Person(String... hobbies) {
this.hobbies = Arrays.asList(hobbies);
}
public List getHobbies() {
return hobbies;
}
}
public class FlatMapExample {
public static void main(String[] args) {
List people = Arrays.asList(
new Person("swimming", "reading"),
new Person("cooking", "photography"),
new Person("hiking", "gardening")
);
// 객체 리스트의 각 요소에서 취미 추출
List hobbies = people.stream()
.flatMap(person -> person.getHobbies().stream())
.collect(Collectors.toList());
System.out.println("추출된 취미 리스트: " + hobbies);
}
}
4. 배열의 각 요소를 2배로 만들기
람다식과 flatMap() 메서드를 사용하여 배열의 각 요소를 2배로 만드는 예제입니다.
import java.util.Arrays;
import java.util.stream.Stream;
public class FlatMapExample {
public static void main(String[] args) {
int[][] array = {{1, 2}, {3, 4}, {5, 6}};
// 배열의 각 요소를 2배로 만들기
int[] flattenedArray = Arrays.stream(array)
.flatMapToInt(Arrays::stream)
.map(num -> num * 2)
.toArray();
System.out.println("2배로 만들어진 배열: " + Arrays.toString(flattenedArray));
}
}
5. 스트림의 각 요소를 문자열로 변환하기
람다식과 flatMap() 메서드를 사용하여 스트림의 각 요소를 문자열로 변환하는 예제입니다.
import java.util.Arrays;
import java.util.stream.Stream;
public class FlatMapExample {
public static void main(String[] args) {
int[][] array = {{1, 2}, {3, 4}, {5, 6}};
// 각 요소를 문자열로 변환하기
String concatenated = Arrays.stream(array)
.flatMapToInt(Arrays::stream)
.mapToObj(String::valueOf)
.reduce("", (str1, str2) -> str1 + str2);
System.out.println("문자열로 변환된 결과: " + concatenated);
}
}
6. 스트림의 각 요소를 정렬하기
람다식과 flatMap() 메서드를 사용하여 스트림의 각 요소를 정렬하는 예제입니다.
import java.util.Arrays;
public class FlatMapExample {
public static void main(String[] args) {
int[][] array = {{3, 2}, {5, 1}, {4, 6}};
// 각 요소를 정렬하기
int[] sortedArray = Arrays.stream(array)
.flatMapToInt(Arrays::stream)
.sorted()
.toArray();
System.out.println("정렬된 배열: " + Arrays.toString(sortedArray));
}
}
'프로그래밍' 카테고리의 다른 글
[Java/자바] List가 비어있는지(null 체크)하는 다양한 방법 (0) | 2024.03.08 |
---|---|
[Java/자바] 직렬화(Serialize)와 역직렬화(Deserialize) (0) | 2024.03.08 |
[Java/자바] 람다식과 map() 메서드 활용하기 (0) | 2024.03.08 |
[Java/자바] 람다식과 filter() 메서드 활용하기 (0) | 2024.03.08 |
[Java/자바] 람다식과 익명 함수의 차이점 (0) | 2024.03.08 |