Collections 클래스
자바에서 컬렉션(List, Set 등)을 쉽게 정렬, 검색, 변형할 수 있도록 도와주는 정적 유틸리티 클래스.
컬렉션 처리 도구 역할을 한다.
정렬(sort), 섞기(shuffle), 탐색(binarySearch) 등 유용한 기능을 제공한다.
주요 메소드
max - 컬렉션 내에서 가장 큰 값 반환
min - 컬렉션 내에서 가장 작은 값 반환
sort - 리스트를 정렬한다. Comparator를 사용해 정렬 방식을 지정하며, Comparator를 주지 않으면 오름차순으로 정렬한다.
shuffle - 리스트의 요소 순서를 무작위로 섞는다.
swap - 지정한 두 인덱스에 위치한 요소의 자리를 서로 바꾼다.
fill - 리스트의 모든 요소를 지정된 객체로 덮어쓴다.
copy - 리스트의 내용을 복사한다.
replaceAll - 리스트 안의 전 값을 모두 찾아 새로운 값으로 변경한다.
addAll - 지정된 모든 요소들을 컬렉션에 한꺼번에 추가한다.
rotate - 요소들을 지정된 거리만큼 회전시킨다.
reverse - 리스트 요소들의 순서를 거꾸 뒤집어준다.
reverseOrder - 역순 정렬을 위한 Comparator 객체를 반환한다.
binarySearch - 이진 탐색 알고리즘을 사용하여 키가 저장 위치(index) 반환. 반드시 리스트가 정렬된 상태여야 제대로 작동한다.
synchronizedList - 멀티쓰레드 환경에서 안전하도록 동기화된 리스트를 생성한다.
unmodifiableList - 읽기 전용
asLifoQueue - 덱을 큐로 전환하여 스택처럼 동작하게 한다.


Collections 클래스와 Collection 인터페이스가 헷갈릴 수 있다.
Collections 클래스 vs. Collection 인터페이스
| Collections 클래스 | 컬렉션을 다루는 유용한 메서드(sort, reverse 등)를 모아둔 정적 클래스 |
| Collection 인터페이스 | 데이터 그룹의 표준 규칙을 정의 (List, Set 등) |
Collection (인터페이스)
- List (순서가 있는 목록) : 데이터의 저장 순서가 유지되며, 중복 저장을 허용한다.
ArrayList : 배열 기반으로 인덱스를 통한 조회 속도가 매우 빠르다.
LinkedList : 데이터 간의 연결(포인터)을 이용하며, 중간에 데이터를 삽입하거나 삭제할 때 효율적이다.
- Set (중복을 허용하지 않는 집합) : 데이터의 순서를 유지하지 않으며, 중복된 데이터를 저장할 수 없다.
HashSet : 정렬 순서가 없으며, 성능이 좋다.
TreeSet : 데이터가 오름차순으로 자동 정렬된다.
- Queue : FIFO 구조로 먼저 들어온 데이터가 먼저 나간다.
참고
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Collections.html
Collections (Java SE 11 & JDK 11 )
Rotates the elements in the specified list by the specified distance. After calling this method, the element at index i will be the element previously at index (i - distance) mod list.size(), for all values of i between 0 and list.size()-1, inclusive. (Thi
docs.oracle.com
https://shurimp.tistory.com/14
JAVA Collections 클래스의 유용한 메소드들
알고리즘 문제를 풀다가 "아, 이 기능 있었으면 참 좋을텐데..."싶은 기능들을 검색해보면 Collections 클래스의 메소드들 안에 들어있는 경우가 많았다. 문제를 풀다가 기억해두면 좋겠다 싶어서
shurimp.tistory.com
'Java' 카테고리의 다른 글
| String / StringBuilder / StringBuffer (0) | 2025.12.18 |
|---|---|
| 객체지향 프로그래밍 (OOP) (0) | 2025.12.17 |
| [Java] URLConnection / HttpURLConnection (0) | 2025.09.10 |
| [Java] 인터페이스 (Interface) (0) | 2025.09.10 |
| [Java] JVM (Java Virtual Machine) (0) | 2025.09.09 |