반응형
해당 페이지에서는 정수 배열 혹은 리스트에서 최소값과 최대값을 찾는 방법에 대해 공유합니다.
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
오늘도 감사합니다. 😀
반응형
'Java > Short 개발' 카테고리의 다른 글
[Java/Short] 카운트 Array/Map 구현방법: Counting Array, Counting Map (0) | 2023.05.13 |
---|---|
[Java/Short] 최대공약수, 최소공배수 구하는 방법 : 두 수 또는 N개의 수 (0) | 2023.05.09 |
[Java/Short] 배열/리스트 중복제거 방법 : 전체, 인접한 요소 중복 제거 (0) | 2023.05.01 |
[Java/Short] 문자열 <-> Date 타입 간의 변환 방법 : + Date 연산 (0) | 2023.04.29 |
[Java/Short] 문자열 내의 문자 개수 구하는 방법 : count, charAt, forEach, replace (0) | 2023.04.29 |