Java/Short 개발

[Java/Short] 배열/리스트 내의 최소값, 최대값 찾는 방법 : min, max

adjh54 2023. 5. 2. 23:14
반응형
해당 페이지에서는 정수 배열 혹은 리스트에서 최소값과 최대값을 찾는 방법에 대해 공유합니다.





1) 배열에서 최소값, 최대값 찾고 값 반환받기


 

1. 반복문을 이용한 방법 : for, for ~ each문


for문을 이용한 방법

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};
        int max = numbers[0];
        int min = numbers[0];

        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i] > max) {
                max = numbers[i];
            }
            if (numbers[i] < min) {
                min = numbers[i];
            }
        }
        System.out.println("min :: " + min + " max :: " + max);
    }
}

 

 

for~each문을 이용한 방법

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;

        for (int number : numbers) {
            if (number < min) min = number;
            if (number > max) max = number;
        }

        System.out.println("min :: " + min + " max :: " + max);
    }
}

 

 

 

 

2. Stream API를 이용한 방법


Arrays.stream().max() 함수를 이용한 방법

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};
        int max = Arrays.stream(numbers).max().getAsInt();
        int min = Arrays.stream(numbers).min().getAsInt();

        System.out.println("min :: " + min + " max :: " + max);
    }
}
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};

        // 최대값 구하기
        int max = Arrays.stream(numbers)
                        .max()
                        .orElse(0);

        // 최소값 구하기
        int min = Arrays.stream(numbers)
                        .min()
                        .orElse(0);

        System.out.println("min :: " + min + " max :: " + max);
    }
}

 

 

Arrays.stream().reduce() 함수를 이용한 방법

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};
        int max = Arrays.stream(numbers)
                        .reduce(Integer.MIN_VALUE, (a, b) -> a > b ? a : b);
        int min = Arrays.stream(numbers)
                        .reduce(Integer.MAX_VALUE, (a, b) -> a < b ? a : b);

        System.out.println("min :: " + min + " max :: " + max);
    }
}

 

 

 

Arrays.stream().summaryStatistics() 함수를 이용한 방법

import java.util.Arrays;
import java.util.IntSummaryStatistics;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 5, 3, 9, 2};
        IntSummaryStatistics stats = Arrays.stream(numbers)
                                            .summaryStatistics();
        int max = stats.getMax();
        int min = stats.getMin();

        System.out.println("min :: " + min + " max :: " + max);
    }
}

 

 

 

 

3. Math 함수를 이용한 방법


Math.min(), Math.max() 함수를 이용한 방법


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

int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;

for (int i : arr) {
    min = Math.min(min, i);
    max = Math.max(max, i);
}

System.out.println("최소값: " + min);  // 1
System.out.println("최대값: " + max);  // 5

 

 

 

 

4. Arrays.sort() 함수를 이용한 방법


Arrays.sort()를 이용한 방법

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

Arrays.sort(arr);

System.out.println("최소값: " + arr[0]);               // 1
System.out.println("최대값: " + arr[arr.length - 1]);  // 5

 

 

 

반응형

 

 

2) 리스트에서 최소값, 최대값 찾고 값 반환받기


1. Collections를 이용한 방법 : Collections.min(), Collections.max()


List<Integer> numbers = Arrays.asList(2, 10, 5, 8, 3);

int minNum = numbers.stream().mapToInt(v -> v).min().orElse(0);
int maxNum = numbers.stream().mapToInt(v -> v).max().orElse(0);

System.out.println("최소값: " + minNum);
System.out.println("최대값: " + maxNum);

 

 

2. Stream API를 이용한 방법: min(), max()


List<Integer> numbers = Arrays.asList(2, 10, 5, 8, 3);

int minNum = numbers.stream().mapToInt(v -> v).min().orElse(0);
int maxNum = numbers.stream().mapToInt(v -> v).max().orElse(0);

// or

int minNum = numbers.stream().min(Comparator.naturalOrder()).orElse(0);
int maxNum = numbers.stream().max(Comparator.naturalOrder()).orElse(0);


System.out.println("최소값: " + minNum);	// 최소값: 2
System.out.println("최대값: " + maxNum);	// 최대값: 10

 

 

3. forEach를 이용한 방법


 List<Integer> numbers = List.of(2, 10, 5, 8, 3);

int minNum = Integer.MAX_VALUE;
int maxNum = Integer.MIN_VALUE;

for (int num : numbers) {
    if (num < minNum) {
        minNum = num;
    }
    if (num > maxNum) {
        maxNum = num;
    }
}

System.out.println("최소값: " + minNum);		// 최소값: 2 
System.out.println("최대값: " + maxNum);		// 최대값: 10

 

 

4. TreeSet을 이용한 방법


List<Integer> numbers = List.of(2, 10, 5, 8, 3);

TreeSet<Integer> sortedNumbers = new TreeSet<>(numbers);

int minNum = sortedNumbers.first();
int maxNum = sortedNumbers.last();

System.out.println("최소값: " + minNum);	// 최소값: 2
System.out.println("최대값: " + maxNum);	// 최대값: 10

 

 

5. sort()를 이용한 방법


List<Integer> numbers = List.of(2, 10, 5, 8, 3);
Integer[] numArray = numbers.toArray(new Integer[numbers.size()]);

Arrays.sort(numArray);

int minNum = numArray[0];
int maxNum = numArray[numArray.length - 1];

System.out.println("최소값: " + minNum);
System.out.println("최대값: " + maxNum);

 

 

 

3) 3개 이상의 숫자를 비교하는 방법


1. 배열내에서 최대 값 구하기 


int[] intArr = {1, 2, 3};

int max = Math.max(Math.max(intArr[0], intArr[1]), intArr[2]);
System.out.println("최대값 :: " + max);    // 3

int min = Math.min(Math.min(intArr[0], intArr[1]), intArr[2]);
System.out.println("최소값 :: " + min);    // 1

 

 

2. 리스트내에서 최대값 구하기


List<Integer> intList = Arrays.asList(1, 2, 3);

int maxVal = Collections.max(intList);
System.out.println("최대값 :: " + maxVal); // 3

int minVal = Collections.min(intList);
System.out.println("최소값 :: " + minVal); // 1

 

 

 

 

오늘도 감사합니다. 😀

 

 

 

 

 

반응형