위 표에서 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()
활용!