
Collections와 Arrays 클래스의 주요 메서드들을 정리하고, 이러한 메서드들이 실제로 어떻게 활용되는지 살펴보도록 하겠습니다. Collections 클래스와 Arrays 클래스는 배열과 컬렉션을 다루는 데 있어 상당히 유용한 도구입니다.Collections 클래스는 컬렉션 데이터를 정렬하거나 검색, 병합, 변환하는 다양한 유틸리티 메서드를 제공하며, 복잡한 자료구조 작업을 간결하게 처리할 수 있게 해줍니다. Arrays 클래스는 배열을 정렬하거나 복사, 비교하는 작업을 효과적으로 수행할 수 있는 메서드들을 제공합니다.Arrays 클래스는 배열을 효과적으로 다루기 위한 다양한 메서드를 제공하는 유틸리티 클래스입니다. Arrays 클래스의 메서드를 사용하면 배열의 이러한 제한을 극복할 수 있는 다양한 작업들을 손쉽게 처리할 수 있습니다.| 기능 | 메서드 이름 | 설명 |
|---|---|---|
| 배열 정렬 | sort(array) | 배열을 오름차순으로 정렬합니다. |
| parallelSort(array) | 대용량 배열을 병렬로 정렬하여 성능을 향상시킵니다. | |
| 배열 검색 | binarySearch(array, key) | 배열에서 이진 탐색을 통해 원하는 값을 검색합니다. - 주의: 정렬된 배열에서만 사용 가능합니다. |
| 배열 복사 | copyOf(array, newLength) | 기존 배열을 복사하여 새로운 크기의 배열을 만듭니다. |
| copyOfRange(array, from, to) | 배열의 특정 범위를 복사하여 새로운 배열을 만듭니다. | |
| 배열 비교 | equals(array1, array2) | 두 배열이 같은지 비교합니다. |
| mismatch(array1, array2) | 두 배열이 일치하지 않는 첫 번째 인덱스를 반환합니다. | |
| 배열 채우기 | fill(array, value) | 배열의 모든 요소를 특정 값으로 채웁니다. |
| 배열 변환 | asList(array) | 배열을 List로 변환하여 반환합니다. |
| toString(array) | 배열의 내용을 문자열로 변환하여 반환합니다. |
Arrays.asList() 메서드는 배열을 List로 변환할 때 사용됩니다.List를 반환하기 때문에, 길이가 변동하는 리스트로 변환하고 싶다면 new ArrayList<>(Arrays.asList(array))를 사용해야 합니다.Collections 클래스는 Java에서 제공하는 다양한 컬렉션을 다루기 위한 유틸리티 메서드들을 제공합니다. List, Set, Map과 같은 컬렉션 프레임워크와 함께 사용됩니다.Collections 클래스는 배열과 달리 동적 크기의 컬렉션을 지원하는 유연한 자료구조와 함께 사용될 때 매우 강력합니다. | 기능 | 메서드 이름 | 설명 |
|---|---|---|
| 컬렉션 정렬 | sort(list) | 주어진 리스트를 오름차순으로 정렬합니다. |
| reverseOrder() | 역순(내림차순)으로 정렬하기 위한 Comparator를 반환합니다. | |
| 컬렉션 검색 | binarySearch(list, key) | 정렬된 리스트에서 이진 탐색을 사용하여 원하는 값을 검색합니다. (정렬된 리스트에서만 사용 가능) |
| 최댓값/최솟값 | max(collection) | 주어진 컬렉션에서 가장 큰 요소를 반환합니다. |
| min(collection) | 주어진 컬렉션에서 가장 작은 요소를 반환합니다. | |
| 데이터 채우기 | fill(list, value) | 주어진 리스트의 모든 요소를 특정 값으로 채웁니다. |
| 데이터 복사 | copy(destList, srcList) | srcList의 모든 요소를 destList로 복사합니다. 두 리스트는 같은 크기여야 합니다. |
| 데이터 병합 | addAll(collection, elements) | 주어진 컬렉션에 여러 개의 요소를 한꺼번에 추가합니다. |
| 데이터 회전 | rotate(list, distance) | 리스트의 요소들을 지정된 거리만큼 회전시킵니다. |
| 데이터 섞기 | shuffle(list) | 주어진 리스트의 요소들을 랜덤하게 섞습니다. |
| 불변 컬렉션 | unmodifiableList(list) | 수정할 수 없는 리스트를 반환합니다. |
| unmodifiableSet(set) | 수정할 수 없는 Set을 반환합니다. | |
| unmodifiableMap(map) | 수정할 수 없는 Map을 반환합니다. |
Collections.sort()와 Collections.binarySearch()는 컬렉션에서 데이터를 정렬하고 검색하는 데 매우 유용합니다. fill(), copy(), addAll() 등의 메서드를 사용하여 컬렉션 간의 데이터 변환과 복사 작업을 간단하게 처리할 수 있습니다.rotate(), shuffle()과 같은 메서드는 컬렉션의 요소를 회전시키거나 랜덤하게 섞는 작업에 유용합니다. unmodifiableList(), unmodifiableSet() 등은 컬렉션을 수정할 수 없게 만들어 불변 객체를 만들 때 사용됩니다. .of() 메서드를 사용하여 해결할 수 있습니다.unmodifiableXXX() 메서드로만 불변 컬렉션을 생성할 수 있었습니다.List<String> immutableList = List.of("a", "b", "c");
Set<String> immutableSet = Set.of("a", "b", "c");
Map<Integer, String> immutableMap = Map.of(1, "one", 2, "two");
synchronizedXXX() 메서드: Collections 클래스는 멀티스레드 환경에서 안전한 컬렉션을 사용할 수 있도록 synchronizedList(), synchronizedSet(), synchronizedMap() 같은 동기화된 컬렉션을 제공합니다List<String> syncList = Collections.synchronizedList(new ArrayList<>());
Set<String> syncSet = Collections.synchronizedSet(new HashSet<>());
Map<String, Integer> syncMap = Collections.synchronizedMap(new HashMap<>());
synchronizedXXX() 메서드로 생성된 컬렉션이 기본적으로는 동기화되지만, 반복(iteration)할 때는 추가로 synchronized 블록으로 감싸야 안전하게 사용할 수 있습니다.이번 포스팅에서는 Java에서 배열과 컬렉션을 다루는 데 필수적인 Arrays와 Collections 클래스의 주요 메서드들을 살펴보았습니다.
배열과 컬렉션의 차이점과 그에 따른 활용 방법을 이해하고, 적절한 상황에서 Arrays와 Collections의 메서드를 활용하여 코드를 더 간결하고 효율적으로 작성할 수 있습니다.
이러한 메서드들을 적절하게 활용하면 Java에서의 데이터 처리 성능과 코드의 가독성을 크게 향상시킬 수 있습니다.