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