위 표에서 Java Stream API의 주요 메서드와 시간복잡도를 확인할 수 있습니다.
다음으로 Stream의 개념과 각 메서드의 사용법을 설명드릴게요! 🚀
stream())List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
✔ stream()을 사용하면 리스트를 스트림으로 변환 가능
✔ 이후 .map(), .filter(), .sorted() 등의 메서드를 적용할 수 있음
map(), mapToInt())map() → 요소 변환List<String> words = Arrays.asList("apple", "banana", "cherry");
List<Integer> lengths = words.stream()
.map(String::length) // 각 문자열 길이 변환
.collect(Collectors.toList());
System.out.println(lengths); // [5, 6, 6]
✔ map(Function<T, R>) → 요소를 변환하여 새로운 스트림 생성
mapToInt() → Integer → int 변환List<Integer> list = Arrays.asList(10, 20, 30);
int[] array = list.stream().mapToInt(i -> i).toArray();
System.out.println(Arrays.toString(array)); // [10, 20, 30]
✔ mapToInt(i -> i)는 Integer를 int로 변환하는 역할
✔ 마지막에 toArray()를 사용하여 int[] 배열로 변환 가능
filter())List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evens = numbers.stream()
.filter(n -> n % 2 == 0) // 짝수만 남김
.collect(Collectors.toList());
System.out.println(evens); // [2, 4, 6]
✔ filter(Predicate<T>) → 조건에 맞는 요소만 남기기
sorted())List<Integer> numbers = Arrays.asList(5, 3, 8, 1);
List<Integer> sortedList = numbers.stream()
.sorted() // 기본 오름차순 정렬
.collect(Collectors.toList());
System.out.println(sortedList); // [1, 3, 5, 8]
✔ sorted() → 오름차순 정렬 (기본값)
List<Integer> sortedDesc = numbers.stream()
.sorted(Comparator.reverseOrder()) // 내림차순 정렬
.collect(Collectors.toList());
System.out.println(sortedDesc); // [8, 5, 3, 1]
✔ 내림차순 정렬은 Comparator.reverseOrder() 사용
distinct())List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 3, 3, 4);
List<Integer> uniqueNumbers = numbers.stream()
.distinct()
.collect(Collectors.toList());
System.out.println(uniqueNumbers); // [1, 2, 3, 4]
✔ distinct() → 중복된 요소 제거 후 새로운 리스트 생성
count())List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream().count();
System.out.println(count); // 5
✔ count() → 스트림 내 요소 개수 반환
collect() → 리스트로 변환List<Integer> list = numbers.stream().collect(Collectors.toList());
✔ collect(Collectors.toList())는 스트림을 리스트로 변환
toArray() → 배열로 변환int[] arr = numbers.stream().mapToInt(i -> i).toArray();
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5]
✔ mapToInt()로 변환 후 toArray()를 사용하면 int[] 반환
| 메서드 | 설명 | 시간복잡도 |
|---|---|---|
stream() | 리스트/배열을 스트림으로 변환 | O(1) |
map(Function<T, R>) | 요소를 변환하여 새로운 스트림 생성 | O(N) |
mapToInt(ToIntFunction<T>) | 요소를 int 값으로 변환 | O(N) |
filter(Predicate<T>) | 조건에 맞는 요소만 필터링 | O(N) |
sorted() | 오름차순 정렬 | O(N log N) |
forEach(Consumer<T>) | 각 요소에 대해 작업 수행 | O(N) |
collect(Collectors.toList()) | 스트림을 리스트로 변환 | O(N) |
count() | 요소 개수 반환 | O(N) |
distinct() | 중복 제거 | O(N) |
toArray() | 스트림을 배열로 변환 | O(N) |
✔ Stream을 사용하면 반복문 없이 리스트/배열을 변환 & 필터링 가능!
✔ mapToInt(i -> i).toArray()는 Integer 리스트를 int[]로 변환하는 가장 쉬운 방법!
✔ 중복 제거 → distinct(), 정렬 → sorted(), 필터링 → filter() 활용!