1. 배열의 출력 - toString()
static String toString(boolean[] a)
static String toString(byte[] a)
static String toString(char[] a)
static String toString(short[] a)
static String toString(int[] a)
static String toString(long[] a)
static String toString(double[] a)
static String toString(Object[] a)
2.배열의 복사 - copyOf(), copyOfRange()
- copyOf() 배열 전체 반환
- copyOfRange() 배열의 일부를 복사해서 새로운 배열을 만들어 반환
- 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);
3.배열 채우기 - fill(), setAll()
- fill() 배열의 모든 요소를 지정된 값으로 채운다.
- setAll() 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.
- 이 메서드를 호출할 때는 함수형 인터페이스를 구현한 객체를 매개변수로 지정하던가 아니면
람다식을 지정해야한다.
int [] arr = new int[5];
Arrays.fill(arr,9);
Arrays.setAll(arr, () -> (int)(Math.random()*5)+1);
4.배열의 정렬과 검색 - sort(),binarySearch()
- sort() 배열을 정렬할 때
- binarySearch() 배열에 저장된 요소를 검색
- binarySearch()는 배열에서 지정된 값이 저장된 위치(index)를 찾아서 반환하는데, 반드시 배열이 정렬된 상태이어야 올바른 결과를 얻는다.
- 만일 검색한 값과 일치하는 요소들이 여러 개 있다면, 이 중에서 어떤 것의 위치가 반환될지는 알 수 없다.
int [] arr = {3,2,-,1,4};
int idx = Arrays.binarySearch(arr,2);
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
int idx = Arrays.binarySearch(arr, 2);
순차 검색(linear search) vs 이진 검색(binary search)
- 순차검색(linear search) 배열의 첫 번째 요소부터 순서대로 하나씩 검색하는 것
- 이 검색 방법은 배열이 정렬되어 있을 필요는 없지만 배열의 요소를 하나씩 비교하기 때문에 시간이 많이 걸린다.
- 이진 검색(binary search) 배열의 검색할 범위를 반복적으로 절반씩 줄여가면서 검색하기 때문에 검색속도가 상당히 빠르다.
- 배열의 길이가 10배가 늘어나도 검색 횟수는 3~4회 밖에 늘어나지 않으므로 큰 배열의 검색에 유리하다.
- 배열이 정렬이 되어 있는 경우에만 사용할 수 있다.
5.배열의 비교와 출력 - toString(), deepToString()
- toString()배열의 모든 요소를 문자열로 편하게 출력할 수 있다.
- 일차원 배열에만 사용
- deepToString() 다차원 배열에 사용
- 2차원뿐만 아니라 3차원 이상의 배열에도 동작
int [] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12}, {21,22}};
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));
6.다차원 배열 비교 - equals(), deepEquals()
- equals()는 두 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 false를 반환
- 일차원 배열에만 가능
- 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);
7.배열을 List로 변환 - asList(Object..a)
- asList()는 배열을 List에 담아서 반환한다.
List list = Arrays.asList(new Integer[]{1,2,3,4,5});
List list = Arrays.asList(1,2,3,4,5);
list.add(6);
- asList()가 반환한 List의 크기를 변경할 수 없다는 것
- 추가 또는 삭제가 불가능하다.
- 저장된 내용은 변경가능
List list = new ArrayList(Arrays.asList(1,2,3,4,5));