Java - HashSet 최대값, 최소값 찾기, 3가지 방법

HashSet의 요소들 중에 최대 값과 최소 값을 찾는 방법을 소개합니다.

1. Collections.max(), min()으로 최대, 최소 값 찾기

Collections.max(), Collections.min()는 인자로 전달된 Set의 요소들 중에 최대, 최소 값을 찾아 리턴합니다. 가장 간단한 방법으로 이렇게 찾을 수 있습니다.

import java.util.*;

public class Example {

    public static void main(String[] args) {

        Set<Integer> set = new HashSet<>();
        set.add(44);
        set.add(10);
        set.add(80);
        set.add(20);
        set.add(15);

        int max = Collections.max(set);
        int min = Collections.min(set);
        System.out.println("max: " + max + ", min: " + min);
    }
}

Output:

max: 80, min: 10

2. IntSummaryStatistics로 최대, 최소 값 찾기

IntSummaryStatistics는 Integer Stream의 데이터의 최대, 최소, 합, 평균 등에 대한 정보가 있는 클래스입니다.

다음과 같이 Stream을 이용하여 IntSummaryStatistics 객체를 만들 수 있고, 여기서 최대, 최소 값을 가져올 수 있습니다.

import java.util.*;

public class Example1 {

    public static void main(String[] args) {

        Set<Integer> set = new HashSet<>();
        set.add(44);
        set.add(10);
        set.add(80);
        set.add(20);
        set.add(15);

        IntSummaryStatistics stats = set.stream()
                .mapToInt(Integer::intValue)
                .summaryStatistics();

        System.out.println("sum: " + stats.getSum());
        System.out.println("average: " + stats.getAverage());
        System.out.println("min: " + stats.getMin());
        System.out.println("max: " + stats.getMax());
    }
}

Output:

sum: 169
average: 33.8
min: 10
max: 80

3. for 문으로 최대, 최소 값 찾기

반복문으로 Set의 모든 요소를 순회하면서 최대, 최소 값을 코드를 직접 구현할 수 있습니다.

import java.util.*;

public class Example2 {

    public static void main(String[] args) {

        Set<Integer> set = new HashSet<>();
        set.add(44);
        set.add(10);
        set.add(80);
        set.add(20);
        set.add(15);

        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        for (Integer n : set) {
            if (n > max) {
                max = n;
            }
            if (n < min) {
                min = n;
            }
        }
        System.out.println("max: " + max + ", min: " + min);
    }
}

Output:

max: 80, min: 10
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha