👉 1. Arrays 유용 메서드 요약 정리
| copyOfRange | 여러 요소 중 일부 범위만 복사 |
| copyOf | 원본 범위를 원하는 길이로 복사 |
| sort | 정렬 (기본 오름차순 정렬) |
| sort(, Comparator) | 사용자 정의 기준으로 정렬 |
| equals | 두 배열이 같은지 비교 |
| toString | 배열을 문자열로 변환 |
| fill | 배열 특정 값으로 채워넣기 |
| binarySearch | 정렬된 배열에서 지정 값 검색 |
📌 2. Arrays 메서드 별 사용 및 주의사항
▪ Arrays.copyOfRange(T[] original, int from, int to)
- 기능 : 배열의 일부분을 복사해서 새로운 배열을 만듬.
(from 인덱스 포함, to 인덱스 미포함)
int[] arr = {1, 2, 3, 4, 5};
int[] newArr = Arrays.copyOfRange(arr, 1, 4); // [2, 3, 4]
Arrays.copyOf(T[] original, int newLength)
- 기능 : 배열을 원하는 길이만큼 복사.
- 원본보다 길면 남는 부분은 타입 기본값(예: int - 0 / boolean - false)으로 채움.
int[] arr = {1, 2, 3};
int[] copy = Arrays.copyOf(arr, 5); // [1, 2, 3, 0, 0]
▪ Arrays.sort(T[] a)
- 기능 : 기본 오름차순 정렬
int[] arr = {5, 3, 1, 4, 2};
Arrays.sort(arr); // [1, 2, 3, 4, 5]
▪ Arrays.sort(T[] a, Comparator<? super T> c)
- binarySearch과 함께 사용할 경우 정렬 기준을 같이 맞춰야 함.
- Comparator 구문에 따라 오름/내림이 변경됨.
String[] arr = {"banana", "apple", "cherry"};
Arrays.sort(arr, (s1, s2) -> s2.compareTo(s1)); // 내림차순 정렬
// ["cherry", "banana", "apple"]
▪ Arrays.equals(T[] a, T[] a2)
- 기능 : 두 배열이 모든 요소가 같은지 비교.
- 순서도 중요함.
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 3};
boolean isEqual = Arrays.equals(arr1, arr2); // true
▪ Arrays.toString(T[] a)
- 기능 : 배열을 보기 좋게 문자열로 변환.
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr)); // "[1, 2, 3]"
▪ Arrays.fill(T[] a, T val)
- 기능 : 배열을 모두 특정 값으로 초기화
- 구간을 지정하면, 일부 범위만 채울 수 있음: fill(arr, fromIndex, toIndex, value) (toIndex는 포함 안 함)
int[] arr = new int[5];
Arrays.fill(arr, 7); // [7, 7, 7, 7, 7]
Arrays.fill(arr, 1, 4, 9); // 인덱스 1부터 3까지 9로 채움
▪ Arrays.binarySearch(T[] a, T key)
- 기능 : 이진 탐색으로 요소를 찾음. (정렬된 배열이어야 함)
- 찾는 값이 없으면 (-삽입위치 -1)을 반환함.
int[] arr = {1, 3, 5, 7, 9};
// 오름차순 정렬된 상태
System.out.println(Arrays.binarySearch(arr, 5));
// 5는 2번 인덱스에 있으니까 => 결과: 2
System.out.println(Arrays.binarySearch(arr, 4));
// 4는 없음. 그런데 5 앞에 들어가야 하니까 인덱스 2에 삽입해야 함.
// 그러면 (-2 - 1) = -3 반환
참고로 만약 List 형태(예: List<Integer>)라면 Collections.binarySearch(list, key, comparator)를 사용 가능
List<Integer>list = Arrays.asList(9, 7, 5, 3, 1);
int index = Collections.binarySearch(list, 5, Comparator.reverseOrder());
System.out.println(index); // 2
🌐 3. Arrays.stream() + Stream 활용 정리
▪ Arrays.stream()
- 배열을 Stream으로 변환.
- 이후 filter(), map(), sum(), collect() 등 다양한 연산을 체이닝 할 수 있음.
형식
Arrays.stream(배열)
▪ 자주 쓰는 Stream 조합 예시
✔️ 배열 합 구하기
int[] arr = {1, 2, 3, 4, 5};
int sum = Arrays.stream(arr).sum(); // 15
✔️ 배열 최댓값, 최솟값 구하기
int max = Arrays.stream(arr).max().getAsInt(); // 5
int min = Arrays.stream(arr).min().getAsInt(); // 1
✔️ 배열을 List로 변환
String[] arr = {"apple", "banana", "cherry"};
List<String> list = Arrays.stream(arr).collect(Collectors.toList());
✔️ 배열을 가공하고 정렬
int[] sorted = Arrays.stream(arr).sorted().toArray();
✔️ 필터링한 후 수 세기
long count = Arrays.stream(arr).filter(n -> n % 2 == 0).count();
'Code Odyssey' 카테고리의 다른 글
| Kotlin 코딩테스트 문법 시리즈 ② : 문자열 (String) (1) | 2025.07.02 |
|---|---|
| Kotlin 코딩테스트 문법 시리즈 ① : 기본 자료형 & 변수 (0) | 2025.07.01 |
| Map<String, Integer> dp 는 시간초과가 나는 이유 : 프로그래머스 - 사칙연산 (1) | 2025.06.11 |
| 왜 Java는 length, length(), size()를 따로 써야 할까? – 통일 안 된 이유 (1) | 2025.06.06 |
| 📌 Java에서 배열 정렬하기 - Arrays.sort() (0) | 2025.05.24 |