[JAVA]배열2(Arrays)
Arrays란?
- Arrays클래스는 배열의 복사, 정렬, 검색 등 배열을 다루기 위한
다양한 메서드를 제공하고 있다.
Arrays 사용법
Arrays.함수명();
배열의 출력
Arrays.toString(배열명);
Integer[] arr2 = {1,6,2,3,10,7,4,5,8,9};
Arrays.sort(arr2,Comparator.reverseOrder());
System.out.println(Arrays.toString(arr2));
결과
[1, 6, 2, 3, 10, 7, 4, 5, 8, 9]
for문 없이 한 번에 출력이 가능한 함수이다.
배열의 정렬
Arrays.sort(배열명);
System.out.println("정렬 전 :" + Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("정렬 후 : " + Arrays.toString(arr));
결과
정렬 전 :[1, 6, 2, 3, 10, 7, 4, 5, 8, 9]
정렬 후 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
내림차순 정렬
내림차순 정렬은 조금 복잡할 수도 있다.
Arrays.sort(배열명,Comparator.reverseOrder());
내림차순 정렬을 하려면 선언할 때 기본 자료형의 클래스타입인 Wrapper클래스가 필요하다.
| 기본 자료형 | Wrapper |
| int | Integer |
| char | Character |
| float | Float |
| double | Double |
Wrapper 자료형을 사용해야 쓸 수 있다.
Integer[] arr2 = {1,6,2,3,10,7,4,5,8,9};
Arrays.sort(arr2,Comparator.reverseOrder());
System.out.println(Arrays.toString(arr2));
결과
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
배열의 복사
자바에서 배열은 한 번 생성하면 그 길이를 변경할 수 없어서
더 많은 데이터를 저장하거나 기존의 배열과 똑같은 배열을 만들려면 배열을 복사해야 한다.
복사의 종류
- 얕은 복사(Shallow Copy) : 주소를 공유하기 때문에 복사된 배열이나 원본 배열이
- 깊은 복사(Deep Copy) : 복사된 배열이나 원본 배열이나 서로 간의 간섭이 없다.
얕은 복사
int[] arr01 = {1,2,3};
int[] arr02 = arr01;
System.out.println("arr02배열 : " + Arrays.toString(arr02));
System.out.println("복사된 배열 값 바꾸고 원본 배열 확인해보기");
arr02[1] = 10;
System.out.println("arr01배열 : " + Arrays.toString(arr01));
System.out.println("arr02배열 : " + Arrays.toString(arr02));
결과
arr02배열 : [1, 2, 3]
복사된 배열 값 바꾸고 원본 배열 확인해보기
arr01배열 : [1, 10, 3]
arr02배열 : [1, 10, 3]
arr02의 값만 바꿨는데 arr01의 값도 바뀌는 것을 확인할 수 있다.
깊은 복사
깊은 복사는 방법이 두 가지이다.
반복문을 통해 직접 하나하나 복사하는 것과
Arrays클래스의 함수를 이용하면 된다.
int[] cards = {1,6,4,5,3,2};
int[] new_cards = new int[cards.length];
//반복문을 이용한 깊은 복사
for(int i = 0; i < cards.length;i++) {
new_cards[i] = cards[i];
}
//Arrays클래스를 이용한 깊은 복사
int[] new_cards2 = Arrays.copyOf(cards, cards.length);
new_cards[1] = 100;
System.out.println("cards 배열 : " + Arrays.toString(cards));
System.out.println("new_cards 배열 : " + Arrays.toString(new_cards));
System.out.println("new_cards2 배열 : " + Arrays.toString(new_cards2));
결과
cards 배열 : [1, 6, 4, 5, 3, 2]
new_cards 배열 : [1, 100, 4, 5, 3, 2]
new_cards2 배열 : [1, 6, 4, 5, 3, 2]
출력 전 new_cards[1]의 값을 바꿨지만 원본에 간섭이 없는 걸 확인할 수 있다.
Arrays에 더 많은 함수들이 있지만 자주 쓰일 거 같은 함수들만 간단하게 살펴봤다.
[JAVA]클래스(Class)
클래스란? - 객체를 생성하기 위한 설명서이다. - 어떤 물건을 만들기 위한 매뉴얼이라고도 생각할 수 있다. - 클래스를 기반으로 객체를 생성해야 한다. - 하나의 설명서로 여러 개의 여러 개의
treebomb-code.tistory.com