특징
- java.util.Collections에 소속되어 있다.
- 모두 static 메소드로 구성되어있다.
- 컬렉션 타입의 객체에 대한 객체생성, 정렬, 병합, 검색 등의 알고리즘을 구현한다.
binarySearch()
1) 지정된 컬렉션의 값을 찾아준다.
2) indexOf() 메소드와 동일하다.
3) 이진 적색 알고리즘을 사용해 인덱스 '0 → 끝' 순서로 값을 검색해서 최초 검색된 값의 인덱스를 반환한다.
4) 이진 검색(binary search)을 이용하므로 검색 속도가 매우 빠르다. 단, 크기순으로 정렬이 되어 있어야 한다.
public static void main(String[] args) {
List<String> movies = new ArrayList<String>();
movies.add("아바타");
movies.add("쇼생크탈출");
movies.add("명량");
movies.add("에일리언");
movies.add("여인의향기");
// Iterator를 이용해 순환 출력
printMovies(movies); // 아바타 → 쇼생크탈출 → 명량 → 에일리언 → 여인의향기 → 여인의향기
// movie 리스트를 오름차순 정렬
Collections.sort(movies);
printMovies(movies); // 명량 → 쇼생크탈출 → 아바타 → 에일리언 → 여인의향기 → 여인의향기
// movie 리스트를 내림차순 정렬
Collections.reverse(movies);
printMovies(movies); // 여인의향기 → 에일리언 → 아바타 → 쇼생크탈출 → 명량 → 명량
// 특정 요소의 인덱스 반환. 아바타의 인덱스 값을 알려준다.
int idx = Collections.binarySearch(movies, "아바타");
System.out.println(idx); // 2
}
public static void printMovies(List<String> list) {
Iterator<String> itr = list.iterator();
while(itr.hasNext()) {
String movie = itr.next();
System.out.print(movie + " → ");
if(itr.hasNext() == false) {
System.out.println(movie);
}
}
}
max() / min()
지정된 컬렉션의 가장 큰 요소 / 가장 작은 요소를 반환한다.
sort()
지정된 컬렉션을 오름차순으로 정렬한다.
shuffle()
지정된 컬렉션의 값을 랜덤으로 뒤섞어준다.
disjoint()
두 개의 컬렉션을 비교해서 일치하는 값이 하나도 없으면 true, 하나라도 있으면 false 반환
copy()
1) 지정된 컬렉션의 모든 요소를 새로운 컬렉션으로 복사해서 반환한다.
2) copy(dest, source)로 인자를 전달한다.
3) dest.size()가 source.size()보다 작으면 Error
4) 전체 배열의 크기가 아니고 size()를 기준으로 에러 여부가 발생한다.
5) 기존 dest 배열의 앞쪽에 삽입한다.
reverse()
지정된 컬렉션의 순서를 역으로 변경한다.