Java/java

java :) Arrays의 다양한 메소드 정리하기

euncheol kim 2022. 4. 23. 18:13

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를 반환다.