알고리즘을 풀다가 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의 크기를 변경할 수 없다. 다시 말해 추가, 삭제가 불가능
'TIL' 카테고리의 다른 글
+ 10 인텔리제이 디버그 디버깅 (0) | 2023.06.22 |
---|---|
+ 9 자바 인터페이스란? 다형성 (0) | 2023.06.20 |
+7 자바 Calendar 클래스 (0) | 2023.06.17 |
+6 예외처리 컴파일에러 / 런타임에러 / 예외클래스 (0) | 2023.06.17 |
+5 자바 숫자야구게임 구현 if문 for문 (0) | 2023.06.15 |