어제 오늘 내일

[Java 기초] Collections.max(), Collections.min()으로 최대/최소값 찾기 본문

IT/Java

[Java 기초] Collections.max(), Collections.min()으로 최대/최소값 찾기

hi.anna 2025. 9. 3. 12:40

리스트에서 가장 큰 값이나 가장 작은 값을 찾을 때, 보통 반복문을 돌려서 비교합니다.
하지만 자바에서는 Collections.max()Collections.min() 메서드를 이용하면 훨씬 간단합니다.
이 메서드들은 리스트에서 최댓값과 최솟값을 쉽게 찾을 수 있게 해줍니다.

 

1. 숫자 리스트에서 최대/최소값 찾기

import java.util.*;

public class MaxMinExample1 {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(10, 5, 20, 8, 15);

        int max = Collections.max(numbers);
        int min = Collections.min(numbers);

        System.out.println("최댓값: " + max);
        System.out.println("최솟값: " + min);
    }
}

실행 결과

최댓값: 20
최솟값: 5

👉 반복문 없이 한 줄로 최댓값과 최솟값을 얻을 수 있습니다.

 

2. 문자열 리스트에서 사용하기

문자열도 사전순으로 비교하여 최대/최소값을 찾을 수 있습니다.

import java.util.*;

public class MaxMinExample2 {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Tom", "Alice", "Bob", "David");

        String max = Collections.max(names);
        String min = Collections.min(names);

        System.out.println("사전순 최댓값: " + max);
        System.out.println("사전순 최솟값: " + min);
    }
}

실행 결과

사전순 최댓값: Tom
사전순 최솟값: Alice

👉 문자열의 경우 사전순 비교가 적용됩니다.

 

3. Comparator로 사용자 정의 정렬 기준 적용

Comparator를 함께 사용하면 원하는 기준으로 최댓값과 최솟값을 찾을 수 있습니다.

import java.util.*;

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + "(" + age + ")";
    }
}

public class MaxMinExample3 {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
                new Person("Tom", 25),
                new Person("Alice", 30),
                new Person("Bob", 20)
        );

        Person oldest = Collections.max(people, Comparator.comparingInt(p -> p.age));
        Person youngest = Collections.min(people, Comparator.comparingInt(p -> p.age));

        System.out.println("가장 나이 많은 사람: " + oldest);
        System.out.println("가장 나이 어린 사람: " + youngest);
    }
}

실행 결과

가장 나이 많은 사람: Alice(30)
가장 나이 어린 사람: Bob(20)

👉 Comparator를 이용하면 숫자, 문자열이 아닌 객체에서도 원하는 기준으로 최대/최소값을 찾을 수 있습니다.

 

4. 정리

  • Collections.max(Collection) → 최댓값 반환
  • Collections.min(Collection) → 최솟값 반환
  • 기본적으로 자연 순서(Comparable) 기준
  • Comparator를 전달하면 원하는 기준으로 최댓값/최솟값 선택 가능

👉 Collections.max()min()을 활용하면 반복문 없이 손쉽게 최댓값과 최솟값을 구할 수 있다!

 

 

반응형
Comments