본문 바로가기

프로그래밍언어/JAVA

[JAVA] Arrays

반응형

1. Arrays

 

Arrays 클래스는 배열을 다루는 다양한 메서드들을 포함하고 있는 클래스이다.

 

- copyOf(), copyOfRange()

 

copyOf() 는 배열 전체를, copyOfRange() 는 배열의 일부를 복사하여 새로운 배열을 만들어 반환한다. copyOfRange() 에서 범위의 끝은 포함되지 않는다. (external)

 

- fill(), setAll()

 

fill() 은 배열의 모든 요소를 지정된 값으로 채운다. setAll() 은 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다. 이 메서드를 호출할 때는 함수형 인터페이스를 구현한 객체를 매개변수로 지정하던가, 람다식을 지정해야 한다.

 

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

 

- sort(), binarySearch()

 

sort() 는 배열을 정렬한다. binarySearch() 는 이름 그대로 이진 탐색 방법을 사용하여 배열에 저장된 요소를 찾을 때 사용하는 메서드인데, binarySearch() 의 결과를 정확하게 하기 위해서는 배열이 정렬되어 있어야 한다.

 

int[] arr = {3, 2, 0, 1, 4};
int index = Arrays.binarySearch(arr, 2); // index=5 -> 잘못된 결과

Arrays.sort(arr); // arr = {0, 1, 2, 3, 4}
index = Arryas.binarySearch(arr, 2); // index=2

 

- equals(), toString()

 

toString() 은 배열의 모든 요소를 문자열로 출력하는 메서드이다. Arrays 에는 다양한 타입의 배열에 대하여 정의되어 있다. toString() 은 일차원 배열에만 사용할 수 있다. 다차원 배열에 대한 출력을 위해서는 deepToString() 메서드를 사용해야 한다.

 

equals() 는 비교하고자 하는 두 배열에 저장된 모든 요소가 동일한지에 대한 여부를 확인하여 결과를 반환한다. equals() 도 일차원 배열에서 사용 가능하며, 다차원 배열에서 사용하기 위해서는 deepToEquals() 를 사용해야 한다.

 

- asList(Object... a)

 

asList() 는 배열을 List 에 담아서 반환한다. 매개변수의 타입이 가변인수라서 배열 생성없이 저장할 요소들만 나열하는 것도 가능하다.

 

List list = Arrays.asList(new Integer[]{1, 2, 3, 4, 5});
List<Integer> new_list = Arrays.asList(1, 2, 3, 4, 5);

 

한가지 주의할 점은 asList() 가 반환한 List 의 크기를 변경할 수 없다는 것이다. 즉, 추가 또는 삭제가 불가능하다. 만약 크기를 변경할 수 있는 List 가 필요하다면 다음과 같이 구현하면 된다.

 

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

 

- parallelXXX(), spliterator(), stream()

 

parallel 로 시작하는 이름의 메서드들은 보다 빠른 결과를 얻기 위해 여러 쓰레드가 작업을 나누어 처리하도록 하는 메서드들이다. spliterator() 는 여러 쓰레드가 처리할 수 있게 하나의 작업을 여러 작업으로 나누는 Spliterator 를 반환한다. stream() 은 컬렉션을 스트림으로 변환한다.

반응형

'프로그래밍언어 > JAVA' 카테고리의 다른 글

[JAVA] HashSet, TreeSet  (0) 2022.01.29
[JAVA] Comparator, Comparable  (0) 2022.01.28
[JAVA] Iterator, ListIterator, Enumeration  (0) 2022.01.26
[JAVA] Stack, Queue  (0) 2022.01.24
[JAVA] List - ArrayList, LinkedList  (0) 2022.01.22