TIL

+8 자바 Arrays. 대표 메서드

JAVABOZA 2023. 6. 19. 23:40

알고리즘을 풀다가 Arrays. ~~ 하는 클래스를 많이 사용하는 개발자분들의 코드를 보았다.

그래서 대표적인 메서드를 정리해보려 한다.

 

※ Arrays에 정의된 메서드는 모두 static 메서드!

 

 

statc String toString(boolean[] a)
statc String toString(char[] a)
statc String toString(short[] a)
statc String toString(int[] a)
statc String toString(double[] a)

등 기본형 배열과 참조형 배열 별로 하나씩 정의될 수 있음 

 

 

Int 형 Arrays 클래스 메서드

 

- copyOf()  

:: 배열 전체를 복사해서 새로운 배열을 만든다.

 

- copyOfRange()

 :: 배열 일부를 복사해서 새로운 배열을 만든다. 마지막 인덱스는 포함하지 않는다

 

int[] arr = {0,1,2,3,4};


int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0,1,2,3,4]
int[] arr3 = Arrays.copyOf(arr, 3); // arr3 = [0,1,2]
int[] arr4 = Arrays.copyOf(arr, 7); // arr4 = [0,1,2,3,4,0,0]
int[] arr5 = Arrays.copyOfRange(arr, 2,4); // arr5 = [2,3]
int[] arr6 = Arrays.copyOf(arr, 0,7); // arr6 = [0,1,2,3,4,0,0]

 

 

- fill() 

:: 배열의 모든 요소를 지정된 값을 채운다.

 

 

- setAll()

:: 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.

이 메서드를 호출할때는 함수형인터페이스를 구현한 객체 메개변수를 쓰던가 람다식으로 해야함

 

int[] arr = new int[5];

Arrays.fill(arr, 9);    // arr=[9,9,9,9,9]
Arrays.setAll(arr, (i) -> (int)(Math.random() * 5)+1);   // arr = [1,5,2,3,1]

 

 

- sort()

:: 배열을 정렬할 때

 

 

- binarySearch()   --> 반드시 배열이 정렬된 상태에서 올바른 결과를 얻을 수 있다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:: 배열에 저장된 요소를 검색할 때

 

binarySearch() 꼭 정렬을 하고 쓰자

 

int[] arr = {3,2,0,1,4};
int idx = Arrays.binarySearch(arr, 2);   // idx = -5   <= 잘못된 결과

Arrays.sort(arr); // 배열 arr을 정렬
System.out.println(Arrays.toString(arr));    // [0,1,2,3,4]
int idx = Arrays.binarySearch(arr, 2);   // idx = 2    <= 올바른 결과

 

 

- toString()

::배열의 모든 요소를 문자열로 출력  -> 일차원배열에서 사용

- deepToString()

:: 배열의 모든 요소를 재귀적으로 접근해서 문자열로 구성  -> 다차원배열에서 사용

int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12}, {21,22}};

System.out.println(Arrays.toString(arr));   //[0,1,2,3,4]
System.out.println(Arrays.deepToString(arr2D));   // [[11, 12],[21,22]]

 

 

- equals()

:: 두 배열에 저장된 모든 요소를 비교해서 맞으면 true / 틀리면 false로 반환

equals()는 일차원배열 / deepEquals()는 다차원배열에서 사용

 

 

- asList()

:: 배열을 list에 담아서 반환 

List list = Arrays.asList(new Integer[]{1,2,3,4,5}); // list = [1,2,3,4,5]
List list = Arrays.asList(1,2,3,4,5);                // list = [1,2,3,4,5]
list.add(6);  // UnsupportedOperationException 예외 발생

 

주의! 

asList()가 반환할 때 list의 크기를 변경할 수 없다. 다시 말해 추가, 삭제가 불가능