Java :: Collection :: 1.6 Arrays

김병철·2022년 9월 4일
0

Java

목록 보기
6/20

Java의 정석 3판을 보며 공부한 내용을 정리하였습니다.
남궁성님께 많이 배우고 있습니다.

1.6 Arrays

Arrays클래스에는 배열을 다루는데 유용한 메서드가 있다!
(모두 static메서드!)


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

  • copyOf() : 배열 전체를 복사

  • copyOfRange() : 배열의 일부를 복사
    (지정된 범위의 끝은 포함 X)

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.copyOf(arr, 7);	//arr4 = [0, 1, 2, 3, 4, 0, 0]
int[] arr5 = Arrays.copyOf(arr, 2, 4);	//arr5 = [2, 3]
int[] arr6 = Arrays.copyOf(arr, 0, 7);	//arr6 = [0, 1, 2, 3, 4, 0, 0]

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

  • fill() : 배열의 모든 요소를 지정된 값으로 채움

  • setAll() : 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.
    (이 메서드 호출 시 함수형 인터페이스를 구현한 객체를 매개변수로 지정하든가 아니면 람다식으로 지정해야 한다.)

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

람다식은 나중에 공부하고나서.. 다시 보는 걸로...


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

  • sort() : 배열을 정렬

  • binarySearch() : 배열에 저장된 요소를 검색
    (배열이 정렬된 상태여야 올바른 결과를 얻는다. 같은 요소가 여러개라면 어떤 것의 위치가 반환될 지 알 수 없다.)


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

  • toString() : 배열의 모든 요소를 문자열로 출력
    (일차원 배열에만 사용가능. 다차원 배열일 경우 deepToString()사용)

  • equals() : 두 배열에 저장된 모든 요소를 비교
    (일차원 배열에만 사용가능. 다차원 배열일 경우 deepEquals()사용)


배열을 List로 변환 - asList(Object... a)

  • asList() : 배열을 List에 담아서 반환
List list = Arrays.asList(new Integer[]{1, 2, 3, 4, 5});
//list = [1, 2, 3, 4, 5]
List list = Arrays.asList(1, 2, 3, 4, 5);
//list = [1, 2, 3, 4, 5]
list.add(6)	// UnsupportedOperationException 예외 발생

반환한 List의 크기는 변경할 수 없다. 추가/삭제가 불가능.
만약, 크기변경이 필요하다면 다음과 같이 사용한다.

List list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

parallelXXX(), spliterator(), stream()

  • parallelXXX() : 여러 쓰레드가 작업을 나누어 처리하도록 한다.

  • spliterator() : 여러 쓰레드가 처리할 수 있도록 하나의 작업을 여러 작업으로 나누는 Spliterator를 반환한다.

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

profile
keep going on~

0개의 댓글