알고리즘을 풀 때 입출력 구현부가 길어지는 것이 너무 불편했다.
파이썬처럼 쉽게 구현할 수 없을까 싶어 찾아보다가 Arrays 의 몇가지 함수들을 정리해보자 한다.
Arrays
Arrays 클래스에는 배열을 유용하게 다룰 수 있는 메서드들이 정의되어 있다.
정의된 메서드는 모두 static 메서드이다.
배열 채우기
int[] arr = new int[10];
Arrays.fill(arr, Integer.MAX_VALUE);
- fill() : 배열의 모든 요소를 지정한 값으로 채운다. => 초기값을 지정해줄 때 매우 편하다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] tmp = br.readLine().toCharArray();
int[] arr = new int[tmp.length];
Arrays.setAll(arr, i->tmp[i]-'0');
- setAll() : 배열을 채우는 데 사용할 함수형 인터페이스를 매개변수로 받는다. 함수형 인터페이스를 구현한 객체를 지정하거나 람다식을 지정해야 한다. => 배열의 모든 요소에 형변환을 해준다거나, 공통으로 연산을 해줄 때 매우 편리하다
배열 복사
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.copyOfRange(arr, 2, 4); // arr4 = [2,3]
int[] arr5 = Arrays.copyOfRange(arr, 0, 7); // arr5 = [0,1,2,3,4,0,0] 기존의 배열길이만큼 채우고, 남은 부분은 0 으로 채운다.
- copyOf() : 매개변수로 받은 배열과 길이만큼 새로운 배열에 복사한다.
- copyOfRange() : 지정한 범위만큼 새로운 배열을 복사하며 지정된 범위의 끝은 포함되지 않음.
배열의 정렬과 검색 - sort(), binarySearch()
- sort() : 배열을 정렬할 때 사용하면 된다.
- binarySearch() : 이진탐색을 위한 메서드로 지정된 값의 인덱스를 반환한다. => 이때 주의할 점은 binarySearch()는 이미 정렬된 배열에 한해서 올바르게 실행된다.
public static void main(String[] args) {
int arr [] = {5,4,3,2,1};
Arrays.sort(arr); // {1, 2, 3, 4, 5}로 정렬
Arrays.binarySearch(arr, 3); // 인덱스 2 반환, 탐색 전 정렬 필요
}
'JAVA' 카테고리의 다른 글
Arrays.binarysearch(int[] arr, int key) (0) | 2023.02.20 |
---|---|
나머지 연산(modulo) 의 분배법칙... (0) | 2023.02.03 |
댓글