다만 이렇게 변환하여 반환한 List는 "읽기 전용"이다. 즉, 값을 가져와 사용만 가능하고 추가, 수정 등은 불가능하다.
// 배열 생성과 동시에 넣을 수도 있음Listlist= Arrays.asList(newInteger[] {1, 2, 3, 4, 5});
// list = [1, 2, 3, 4, 5]// 값만 넣어도 이를 배열로 인식하고 사용 가능Listlist= Arrays.asList(1, 2, 3, 4, 5};
// list = [1, 2, 3, 4, 5]
list.add(6);
//예외발생!! 값 변경 불가능 / 읽기만 가능
1. 첫 번째 탐색 배열 범위 low = 0, high = 9로 중간 인텍스 계산 = (low + high) / 2 = 4 즉 배열의 중간 값은 arr[4] = 5
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(5)이 목표값(7)보다 작음 = 중앙값(5)을 기준으로 우측으로 탐색 범위로 좁힘
2. 두 번째 탐색 배열 범위 low = 5, high = 9로 중간 인텍스 계산 = (low + high) / 2 = 7 즉 배열의 중간 값은 arr[7] = 8
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(8)이 목표값(7)보다 큼 = 중앙값(8)을 기준으로 좌측으로 탐색 범위로 좁힘
3. 세 번째 탐색 배열 범위 low = 5, high = 6로 중간 인텍스 계산 = (low + high) / 2 = 5 즉 배열의 중간 값은 arr[5] = 6
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(6)이 목표값(7)보다 작음 = 중앙값(6)을 기준으로 우측으로 탐색 범위로 좁힘
4. 네 번째 탐색 배열 범위 low = 6, high = 6로 중간 인텍스 계산 = (low + high) / 2 = 6 즉 배열의 중간 값은 arr[5] = 7
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(7)이 목표값(7)과 동일 = 즉시 탐색 종료
위와 같은 방식으로 탐색하기 때문에 요소의 값들이 정렬되어 있어야 한다.
int[] arr = {3, 2, 0, 1, 4};
intidx= Arrays.binarySearch(arr, 2);
// idx = -5 잘못된 결과가 나옴
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// [0, 1, 2, 3, 4]intidx= Arrays.binarySearch(arr, 2);
// idx = 2 올바른 결과가 나옴
다만 이렇게 변환하여 반환한 List는 "읽기 전용"이다. 즉, 값을 가져와 사용만 가능하고 추가, 수정 등은 불가능하다.
// 배열 생성과 동시에 넣을 수도 있음Listlist= Arrays.asList(newInteger[] {1, 2, 3, 4, 5});
// list = [1, 2, 3, 4, 5]// 값만 넣어도 이를 배열로 인식하고 사용 가능Listlist= Arrays.asList(1, 2, 3, 4, 5};
// list = [1, 2, 3, 4, 5]
list.add(6);
//예외발생!! 값 변경 불가능 / 읽기만 가능
1. 첫 번째 탐색 배열 범위 low = 0, high = 9로 중간 인텍스 계산 = (low + high) / 2 = 4 즉 배열의 중간 값은 arr[4] = 5
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(5)이 목표값(7)보다 작음 = 중앙값(5)을 기준으로 우측으로 탐색 범위로 좁힘
2. 두 번째 탐색 배열 범위 low = 5, high = 9로 중간 인텍스 계산 = (low + high) / 2 = 7 즉 배열의 중간 값은 arr[7] = 8
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(8)이 목표값(7)보다 큼 = 중앙값(8)을 기준으로 좌측으로 탐색 범위로 좁힘
3. 세 번째 탐색 배열 범위 low = 5, high = 6로 중간 인텍스 계산 = (low + high) / 2 = 5 즉 배열의 중간 값은 arr[5] = 6
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(6)이 목표값(7)보다 작음 = 중앙값(6)을 기준으로 우측으로 탐색 범위로 좁힘
4. 네 번째 탐색 배열 범위 low = 6, high = 6로 중간 인텍스 계산 = (low + high) / 2 = 6 즉 배열의 중간 값은 arr[5] = 7
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단 - 중앙값(7)이 목표값(7)과 동일 = 즉시 탐색 종료
위와 같은 방식으로 탐색하기 때문에 요소의 값들이 정렬되어 있어야 한다.
int[] arr = {3, 2, 0, 1, 4};
intidx= Arrays.binarySearch(arr, 2);
// idx = -5 잘못된 결과가 나옴
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// [0, 1, 2, 3, 4]intidx= Arrays.binarySearch(arr, 2);
// idx = 2 올바른 결과가 나옴