[Java] Array
두 개 배열 같은지 비교
Arrays.equals(original, new);
Arrays.equals(bubble, sort);
int[] bubble = {1, 2, 3};
int[] sort = {1, 2, 3};
if (Arrays.equals(bubble, sort)) {
System.out.println("두 배열이 같아요!");
} else {
System.out.println("두 배열이 달라요!");
}
배열 복사
Arrays.clone()
int[] original = {1, 2, 3};
int[] copy = original.clone();
Arrays.clone()
은 배열을 깊은 복사해서 새로운 배열을 만들고, 그 새 배열을 다시 변수에 할당해서 새 배열을 만든다.
이렇게 하면 copy
가 original
의 복사본이 되고, 둘은 서로 다른 배열이 된다.
Arrays.copyOf()
int[] newArray = Arrays.copyOf(originalArray, newLength);
Arrays.copyOf()
는 배열을 원하는 크기만큼 복사해서 새 배열을 만드는 메서드야.
기존 배열 일부만 복사하거나, 전체 복사할 때 자주 쓰이인다.
originalArray
: 복사할 원본 배열newLength
: 새 배열의 크기 (원본보다 크면 부족한 부분은 기본값(0)으로 채워짐)- 반환값은 복사된 새로운 배열
- 원본 배열의 길이보다
newLength
가 크면 나머지 칸은 기본값(숫자 배열은 0)으로 채워짐 - 원본 배열보다 짧으면 그만큼만 복사해서 자름
int[] arr = {1, 2, 3, 4, 5};
int[] copy1 = Arrays.copyOf(arr, 3); // {1, 2, 3}
int[] copy2 = Arrays.copyOf(arr, 7); // {1, 2, 3, 4, 5, 0, 0}
배열 중복값 제거, 정렬
배열 중복값 제거하고 배열 데이터 내림차순으로 정렬해서 반환하기
import java.util.Arrays;
import java.util.Collections;
class Solution {
public static int[] solution(int[] arr) {
// 1. 중복값 제거 + Integer[] 변환
Integer[] result = Arrays.stream(arr)
.boxed()
.distinct()
.toArray(Integer[]::new);
// 2. 내림차순 정렬
Arrays.sort(result, Collections.reverseOrder());
// 3. Integer[] -> int[] 변환 후 반환
return Arrays.stream(result)
.mapToInt(Integer::intValue)
.toArray();
}
}
stream 안쓸거면 아래와 같이 TreeSet으로 구현해도 되지만 있는거 쓰자
import java.util.Arrays;
import java.util.TreeSet;
import java.util.Comparator;
class Solution {
public static int[] solution(int[] arr) {
// 1. TreeSet에 내림차순 정렬로 값 넣기 (중복 자동 제거됨)
TreeSet<Integer> treeSet = new TreeSet<>(Comparator.reverseOrder());
for (int num : arr) {
treeSet.add(num);
}
// 2. TreeSet -> int[] 변환
return treeSet.stream()
.mapToInt(Integer::intValue)
.toArray();
}
}