[JAVA] Java 알고리즘 문제 풀이 시, 자주 쓰이는 Steam API 함수들
in JAVA
알고리즘 문제풀이 시, 코드를 예쁘고 빠르게 만들어주는 Steam API를 정리해보았습니다.
자주 쓰이는 Stream API 함수들
1. 배열 → 스트림
Arrays.stream(arr)
:int[]
,double[]
,long[]
같은 primitive 배열을 스트림으로 변환Stream.of(array)
:String[]
같은 객체 배열을 스트림으로 변환
예:
int[] arr = {1, 2, 3};
Arrays.stream(arr).forEach(System.out::println);
String[] strArr = {"1", "2", "3"};
Stream.of(strArr).forEach(System.out::println);
2. 형 변환 (Mapping)
mapToInt(Integer::parseInt)
: 문자열 스트림 → 정수 스트림map(String::length)
: 문자열 스트림 → 문자열 길이 스트림
예:
String[] arr = {"1", "2", "3"};
int[] intArr = Arrays.stream(arr).mapToInt(Integer::parseInt).toArray();
3. 집계 연산 (Aggregation)
.min().getAsInt()
/.max().getAsInt()
: 최솟값 / 최댓값.sum()
: 합계.average().getAsDouble()
: 평균
예:
int[] arr = {1, 2, 3, 4};
int min = Arrays.stream(arr).min().getAsInt();
int max = Arrays.stream(arr).max().getAsInt();
4. 정렬 / 수집
.sorted()
: 정렬.toArray()
: 배열로 다시 변환.collect(Collectors.toList())
: 리스트로 변환
예:
String[] arr = {"3", "1", "2"};
List<Integer> list = Arrays.stream(arr)
.map(Integer::parseInt)
.sorted()
.collect(Collectors.toList());
5. forEach / joining
.forEach(System.out::println)
: 요소 출력.collect(Collectors.joining(" "))
: 문자열 합치기
예:
String[] arr = {"a", "b", "c"};
String result = Arrays.stream(arr)
.collect(Collectors.joining(", ")); // "a, b, c"
🎯 이 문제를 Stream으로 풀면 이렇게도 가능
public String solution(String s) {
IntSummaryStatistics stats = Arrays.stream(s.split(" "))
.mapToInt(Integer::parseInt)
.summaryStatistics(); // count, min, max, sum, average 한번에
return stats.getMin() + " " + stats.getMax();
}
👉 IntSummaryStatistics
를 쓰면 최소값/최대값/합계/평균을 다 구할 수 있어서 깔끔!
💡 정리 비슷한 문제에서 빠르게 풀고 싶으면 최소한 아래 3개는 꼭 익혀두자:
mapToInt(Integer::parseInt)
min() / max() / sum() / average()
summaryStatistics()