[java] Integer.compare와 IntStream.sum 완벽 정리

CHOI HONGSEO·2026년 4월 9일

자바(Java)로 알고리즘 문제를 풀거나 실무 코드를 작성하다 보면, "두 숫자의 크기 비교하기"와 "배열 안의 숫자 모두 더하기"는 숨 쉬듯 자주 마주치는 패턴입니다.

매번 if-else문과 for문을 쓰다 보면 코드가 길어지고 지저분해지기 마련이죠. 오늘은 이 두 가지 노가다(?) 작업을 단 한 줄로 깔끔하게 끝내주는 자바의 핵심 도우미 메서드 2가지를 소개합니다.


1. Integer.compare(A, B) : "비교 결과를 숫자로 딱 정해줄게!"

코딩 테스트를 풀다 보면 "A가 B보다 크면 1, 같으면 0, 작으면 -1을 반환하라"는 요구사항을 정말 자주 봅니다. 보통은 아래와 같이 코드를 작성하게 됩니다.

기존의 방식 (길고 장황함)

int a = 10;
int b = 5;

if (a > b) {
    return 1;
} else if (a < b) {
    return -1;
} else {
    return 0;
}

세련된 방식 (단 한 줄!)

return Integer.compare(a, b);

이 코드는 앞선 7줄짜리 if-else문과 완벽하게 똑같이 동작합니다.

왜 이 메서드를 알아야 할까요?
자바에서 1, 0, -1을 반환하는 것은 값을 비교할 때 사용하는 가장 표준적인 약속입니다. 자바를 만든 사람들은 이 규칙을 매번 작성하는 것이 번거로울 것을 알고, 아예 Integer 클래스 안에 compare라는 함수로 만들어 두었습니다.
나중에 객체를 정렬(Sorting)할 때 쓰이는 ComparatorComparable을 다룰 때도 이 원리가 똑같이 적용되므로 무조건 외워두시는 것이 좋습니다!


2. IntStream.of(배열).sum() : "for문 안 돌려도 내가 다 더해줄게!"

배열 안에 있는 숫자들을 전부 더할 때, 우리는 무의식적으로 sum이라는 변수를 0으로 만들고 for문을 돌립니다.

기존의 방식 (전통적인 for문)

int[] arr = {1, 2, 3, 4, 5};
int sum = 0;

for (int i = 0; i < arr.length; i++) {
    sum += arr[i];
}
return sum;

세련된 방식 (Stream API 활용)
자바 8부터 도입된 스트림(Stream)을 사용하면 이 과정을 한 줄로 우아하게 끝낼 수 있습니다.

int[] arr = {1, 2, 3, 4, 5};
return IntStream.of(arr).sum();

어떻게 작동하는 걸까요?
이 코드는 공장의 '컨베이어 벨트'를 상상하면 쉽습니다.

  1. IntStream.of(arr): 배열(arr)에 있는 숫자들을 작업하기 편하도록 컨베이어 벨트 위로 쫙 일렬로 올려놓습니다. (참고로 Arrays.stream(arr)이라고 써도 완벽하게 똑같이 작동합니다!)
  2. .sum(): 벨트 맨 끝에 서서, 지나가는 숫자들을 남김없이 싹쓸이해서 더한 뒤 최종 결괏값을 툭 뱉어냅니다.

sum() 외에도 가장 큰 값을 찾는 .max(), 평균을 구하는 .average() 등 다양한 통계 기능을 기본으로 제공하므로 배열을 다룰 때 아주 강력한 무기가 됩니다.

profile
곧 성공할 개발자입니다.

0개의 댓글