본문 바로가기
Language/java

[Java] 컬렉션 프레임윅 (Arrays)

by gamxong 2022. 7. 27.

 

배열의 복사 - copyOf(), copyOfRange()

 

copyOf() : 배열 전체를 복사해서 새로운 배열을 만들어 반환

copyOfRange() : 배열의 일부를 복사해서 새로운 배열을 만들어 반환

int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOfRange(arr, 2, 4);

 

배열의 채우기 - fill(), setAll()

 

fill() : 배열의 모든 요소를 지정된 값으로 채운다.

setAll() : 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.

int[] arr = new int[5];
Arrays.fill(arr, 9);
Arrays.setAll(arr, () -> (int)(Math.random()*5)+1);

 

배열의 정렬과 검색 - sort(), binarySearch()

 

sort() : 배열을 정렬할 때

 

binarySearch() : 배열에 저장된 요소를 검색할 때, 반드시 배열이 정렬된 상태이어야 올바른 결과를 얻는다.

 (검색한 값과 일치하는 요소들이 여러 개 있다면, 어떤 것의 위치가 반환될 지 알 수 없음)

 

순차 검색 - 배열의 첫 번째 요소부터 순서대로 하나씩 검색하는 것
- 배열이 정렬되어 있을 필요 X
이진 검색 - 배열의 검색할 범위를 반복적으로 절반씩 줄여가면서 검색
- 배열이 정렬되어야 함.

 

 

문자열의 비교와 출력 - equals(), toString()

 

toString() : 배열의 모든 요소를 문자열로 편하게 출력할 수 있음, 일차원 배열에만 사용 가능

deepTo String() : 배열의 모든 요소를 재귀적으로 접근해서 문자열을 구성하므로 2차원이상의 배열에도 동작

int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,22},{21,22}};

System.out.println(Arrays.toString(arr));
System.out.println(Arrays.deepToString(arr2D));

 

equals() : 두 배열에 저장된 모든 요소를 비교해서 같으면 true, 다르면 false를 반환

(배열에 저장된 배열의 주소를 비교하기 때문 -> 다차원배열에 사용하면 무조건 false 반환)

deepEquals() : 다차원 배열의 비교에서 사용

 

 

배열을 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));
// 크기를 변경할 수 있는 List

 

parallelXXX(), spliterator(), stream()

 

'parallel'로 시작하는 메서드 : 빠른 결과를 위해 여러 쓰레드가 작업을 나누어 처리

 

spliterator() : 여러 쓰레드가 처리할 수 있게 하나의 작업을 여러 작업으로 나누는 spliterator()를 반환

 

stream() : 컬렉션을 스트림으로 변환

댓글