goal
Arrarys의 다양한 메소드를 이해한다.
"Arrays사용법"
import java.util.Arrays
1 ] Arrays의 다양한 메소드
1. binarySearch() 메소드
[1] 개념
특정 객체의 위치를 이진 검색 알고리즘을 사용하여 검색한 후, 해당 위치를 반환한다.
※ 이진 검색 알고리즘
- 원리 : 배열의 임의 중앙값과 찾고자 하는 값의 대소를 비교하는 방식
- 특징 :
- 오름차순으로 정렬된 리스트에서 특정한 값이 위치를 찾는 알고리즘
- 시간 복잡도의 이점을 얻을 수 있다.
- 순환 탐색의 경우 O(n)
- 이진 탐색의 경우 O(log n)
- 시간 복잡도의 이점을 얻을 수 있다.
- 단, 배열이 정렬(sort())이 된 상태일 때 사용해야한다.
- 정렬이 되지 않은 상태에서 사용하게 된다면 엉뚱한 값을 얻을 수 있다.
- 오름차순으로 정렬된 리스트에서 특정한 값이 위치를 찾는 알고리즘
[2] 예제 소스코드 및 결과
import java.util.Arrays;
...
int[] arr = new int[1000];
for (int i = 0; 0 < arr.length; i ++) {
arr[i] = i;
}
System.out.println(Arrays.binarySearch(arr, 437));
437
2. copeOf() 메소드
[1] 개념
전달받은 배열의 특정 길이만큼을 새로운 배열로 복사하여 반환한다.
[2] 예제 소스코드 및 결과
int[] baseArr = {1,2,3,4,5};
int[] first_copeArr = Arrays.copeOf(baseArr, 3);
int[] second_copeArr = Arrays.copeOf(baseArr, 10);
for (int i = 0; i < first_copeArr.length; i++) {
System.out.print(first_copeArr[i] + " ");
}
for (int i = 0; i < second_copeArr.length; i++) {
System.out.print(second_copeArr[i] + " ");
}
1 2 3
1 2 3 4 5 0 0 0 0 0
※ second_copeArr은 baseArr의 크기보다 크므로, int의 기본형인 0으로 채워진다.
3. copeOfRange() 메소드
[1] 개념
전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환한다.
[2] 예제 소스코드 및 결과
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 2, 4);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i] + " ");
}
3 4
4. fill() 메소드
[1] 개념
전달받은 배열의 모든 요소를 특정 값으로 초기화해준다.
[2] 예제 소스코드 및 결과
int[] arr = new int[10];
Arrays.fill(arr, 7);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
7 7 7 7 7 7 7 7 7 7
5. sort() 메소드
[1] 개념
전달받은 배열의 모든 요소를 오참차순으로 정렬한다.
[2] 예제 소스코드 및 결과
int[] arr = {5, 3, 4, 1, 2};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
1 2 3 4 5
6. equals() 메소드
[1] 개념
전달받은 배열들의 값이 같은지 확인한다.
[2] 예제 소스코드 및 결과
int[] arr1 = {5, 3, 4, 1, 2};
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = {1, 2, 3};
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.equals(arr1, arr3));
System.out.println(Arrays.equals(arr2, arr3));
System.out.println();
Arrays.sort(arr1);
System.out.println(Arrays.equals(arr1, arr2));
false
false
flase
falas
※ 모두 false가 나온 이유
- 배열의 변수는 "참조변수"이다. 즉, 비교하는 대상들의 메모리 위치가 같아야 True를 반환다.
'Java > java' 카테고리의 다른 글
java :) Arrays.toString으로 배열 간편하게 출력하기 ( + 출력할 때 괄호 없애는 방법) (0) | 2022.05.09 |
---|---|
java :) StringBuilder, StringBuffer의 개념과 사용의 이해 (0) | 2022.05.04 |
java :) StringBuffer (0) | 2022.04.23 |
java :) inner class란? (0) | 2022.04.22 |
java :) interface와 abstract의 공통점과 차이점 (0) | 2022.04.22 |