Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)로 컬렉션 요소 비교하기 – 최솟값과 최댓값 구하는 프로그램

이 글에서는 자바(Java)에서 컬렉션(Collection)의 요소를 비교하여 최솟값과 최댓값을 구하는 방법을 알아보겠습니다.

컬렉션(Collection)은 객체 그룹을 저장하고 조작할 수 있는 아키텍처를 제공하는 자바의 핵심 프레임워크입니다. 자바 컬렉션을 활용하면 검색, 정렬, 삽입, 조작, 삭제 등 데이터에 대해 수행하는 거의 모든 작업을 손쉽게 처리할 수 있습니다.

문제 예시

먼저 입력값과 기대 출력값을 살펴보겠습니다.

입력값:

Input list: [300, 500, 180, 450, 610]

기대 출력값:

Min value of our list : 180
Max value of our list : 610

알고리즘

전체 로직은 다음 단계로 진행됩니다.

Step 1 - 시작
Step 2 - 리스트(input_list) 선언
Step 3 - 리스트에 값 정의
Step 4 - Collections.min()과 Collections.max() 함수를 사용해 컬렉션의 최솟값과 최댓값 조회
Step 5 - 결과 출력
Step 6 - 종료

예제 1: main 함수 안에서 처리하기

첫 번째 예제는 모든 연산을 main 함수 안에서 한 번에 처리하는 방식입니다.

import java.util.*;
public class Demo {
    public static void main(String[] args){
        List<Integer> input_list = new ArrayList<>();
        input_list.add(300);
        input_list.add(500);
        input_list.add(180);
        input_list.add(450);
        input_list.add(610);
        System.out.println("The list is defined as: " +input_list);
        int minimum_value = Collections.min(input_list);
        int maximum_value = Collections.max(input_list);
        if (minimum_value == maximum_value) {
            System.out.println("All the elements of the list are equal");
        }
        else {
            System.out.println("\nMin value of our list : " + minimum_value);
            System.out.println("Max value of our list : " + maximum_value);
        }
    }
}

실행 결과:

The list is defined as: [300, 500, 180, 450, 610]

Min value of our list : 180
Max value of our list : 610

예제 2: 객체 지향 방식으로 함수 분리하기

두 번째 예제는 객체 지향 프로그래밍(OOP) 스타일에 맞게 최솟값·최댓값을 구하는 로직을 별도의 함수로 캡슐화한 방식입니다. 코드의 재사용성과 가독성이 더욱 향상됩니다.

import java.util.*;
public class Demo {
    static void min_max(List<Integer> input_list){
        int minimum_value = Collections.min(input_list);
        int maximum_value = Collections.max(input_list);
        if (minimum_value == maximum_value) {
            System.out.println("All the elements of the list are equal");
        }
        else {
            System.out.println("\nMin value of our list : " + minimum_value);
            System.out.println("Max value of our list : " + maximum_value);
        }
    }
    public static void main(String[] args){
        List<Integer> input_list = new ArrayList<>();
        input_list.add(300);
        input_list.add(500);
        input_list.add(180);
        input_list.add(450);
        input_list.add(610);
        System.out.println("The list is defined as: " +input_list);
        min_max(input_list);
    }
}

실행 결과:

The list is defined as: [300, 500, 180, 450, 610]

Min value of our list : 180
Max value of our list : 610

핵심 포인트 정리

  • Collections.min() : 컬렉션 내 가장 작은 값을 반환합니다.
  • Collections.max() : 컬렉션 내 가장 큰 값을 반환합니다.
  • 두 값이 같다면 리스트의 모든 요소가 동일하다는 의미이므로, 이 경우를 별도로 처리하면 더 견고한 코드가 됩니다.
  • 반복 로직은 별도의 메서드로 분리하면 유지보수와 재사용에 유리합니다.