728x90
Arrays 클래스에는 배열을 다루는데 유용한 메서드들이 정의되어 있는데, 몇개 살펴보도록 하자.
복사 - copyOf(), copyOfRange()
copyOf()는 배열 전체를, copyOfRange()는 배열의 일부를 복사해서 새로운 배열을 만든다.
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //[0, 1, 2, 3, 4]
int[] arr3 = Arrays.copyOf(arr, 3); //[0, 1, 2]
int[] arr4 = Arrays.copyOf(arr, 7); //[0, 1, 2, 3, 4, 0, 0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //[2,3] <- 4는 미포함
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //[0, 1, 2, 3, 4, 0, 0]
보면 알 수 있듯이, 지정된 범위의 끝 미만까지만 포함한다.
채우기 - fill(), setAll()
int [] arr = new int[5];
Arrays.fill(arr, 9); // [9, 9, 9, 9, 9]
Arrays.setAll( arr, i -> (int)(Math.random()*5)+1 );
정렬과 검색
int [] arr = {3, 2, 0, 1, 4};
int idx = Arrays.binarySearch(arr, 2); //배열이 정렬된 경우에만 사용한다.
Arrays.sort(arr);
비교 - equals()와 deepEquals()
equals는 일차원 배열에만 사용이 가능하고, deepEquals는 다차원 배열에 사용이 가능하다.
다차원 배열에 equals를 사용하면, 배열에 저장된 내용이 같더라도, equals는 주솟값을 비교하기 때문에 false를 반환한다.
String [][] arr = new String[][]{ {"A", "B"}, {"a", "b"} };
String [][] arr2 = new String[][]{ {"A", "B"}, {"a", "b"} };
Arrays.equals(arr, arr2); //false
Arrays.deepEquals(arr, arr2); //true
출력 - toString(), deepToString()
비교와 마찬가지로 다차원 배열의 출력시 deepToString을 사용해야 한다!
📔 Reference
[JAVA의 정석 기초편 - 남궁성]
728x90
'☕️ Java > 기본' 카테고리의 다른 글
[JAVA] 자바의 표준 함수형 인터페이스 (0) | 2021.12.22 |
---|---|
[JAVA] Comparator, Comparable (0) | 2021.12.22 |
[JAVA] Iterator, ListIterator, Enumeration (0) | 2021.12.19 |
[JAVA] Stack과 Queue + Deque, 우선순위 큐(PriorityQueue ) (0) | 2021.12.18 |
[JAVA] ArrayList 최대&최솟값 구하기 (0) | 2021.12.17 |