Arrays 클래스
- 배열을 다루기 편리한 메서드(static) 제공
- 배열의 출력 - toString()
static String toString(char[] a)
- 배열의 복사 - copyOf(), copyOfRange()
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOf(arr, 3);
int[] arr4 = Arrays.copyOf(arr, 7);
int[] arr5 = Arrays.copyOfRange(arr, 2, 4);
int[] arr6 = Arrays.copyOfRange(arr, 0, 7);
- 배열 채우기 - fill(), setAll()
int[] arr = new int[5];
Arrays.fill(arr, 9);
Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); 1<=i<6
- 배열의 정렬과 검색 - sort(), binarySearch()
- binarySearch()는 이진탐색(이분탐색) -> 정렬된 배열에만 가능
int[] arr = {3, 2, 0, 1, 4};
int idx = Arrays.binarySearch(arr, 2);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
int idx = Arrays.binarySearch(arr, 2);
- 다차원 배열의 출력 - 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]]
- 다차원 배열의 비교 - deepEquals()
String[][] str2D = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
String[][] str2D2 = new String[][]{{"aaa","bbb"},{"AAA","BBB"}};
System.out.println(Arrays.equals(str2D, str2D2));
System.out.println(Arrays.deepEquals(str2D, str2D2));
- 배열을 List로 변환 - asList(Object... a)
List list = Arrays.asList(new Integer[]{1,2,3,4,5});
List list = Arrays.asList(1,2,3,4,5);
list.add(6);
List list = new ArrayList(Arrays.asList(1,2,3,4,5));
- 람다와 스트림 - parallelXXX(), spliterator(), stream()
순차검색과 이진탐색
- 순차 검색 - 앞(또는 뒤)에서부터 반복문으로 순서대로 검색
- 이진 탐색 - 배열을 정렬 후, 배열을 반복해서 반으로 나누어 범위를 줄여가며 비교 탐색
예제
for(int i : arr7) {
char[] graph = new char[3];
Arrays.fill(graph,"*");
System.out.println(new String(graph)+i);
}