다른 컬렉션, 자료구조에 대해 궁금하다면 아래의 링크로 들어오시라👍
Collections ?
Collections는 컬렉션과 관련되 메소드를 제공하는데
이를 이용하면 컬렉션클래스를 보다 편하게 사용할 수 있다.
메소드 | 설 명 |
void fill(List list, Object obj); | List(list)를 객체(obj)로 채운다 |
void copy(destination dest, Source src); | 목적지(dest)의 컬렉션을 source(src)의 데이터로 복사한다. dest의 size가 src의 size보다 크거나 같아야 복사가 된다. |
void sort(List list); | List(list)를 오름 차순으로 정렬한다. |
void sort(List list, Comparator c); | List(list)를 Comparator의 정렬 기준으로 정렬한다. |
int binarySearch(List list, Key key) | List에서 key가 저장된 위치를 찾아 반환한다. 반드시 sort()로 정렬한 후에 실행해야 올바른 값이 나온다. |
Collection synchronizedCollection(Collection c) | 컬렉션 동기화 멀티 쓰레드 프로그래밍 시 하나의 객체에 여러 쓰레드가 동시에 접근할 수 있기 때문에 데이터의 일관성을 유지하기 위해 공유되는 객체에 동기화(synchronized)가 필요하다 동기화가 필요 할 때 해당하는 것을 사용하면 된다. |
List synchronizedList(List list) | |
Set synchronizedSet(Set s) | |
Map synchronizedMap(Map m) |
|
SortedSet synchronizedSortedSet(SortedSet s) |
|
SortedMap synchronizedSortedMap(SortedMap m) |
|
Collection unmodifiableCollection(Collection c) | 변경불가 컬렉션 만들기 저장된 데이터를 보호하기 위해 컬렉변을 변경할 수 없게 읽기전용으로 만들어야할 때가 있다. 주로 멀티 쓰레드 프로그래밍에서 여러 쓰레드가 하나의 컬렉션을 공유하다보면 데이터 손상이 생기는데 이를 방지하기 위한 메서드이다. |
List unmodifiableList(List list) | |
Set unmodifiableSet(Set set) | |
Map unmodifiableMap(Map map) | |
NavigableSet unmodifiableNavigableSet(NavigableSet set) | |
SortedSet unmodifiableSortedSet(SortedSet set) | |
NavigableMap unmodifiableNavigableMap(NavigableMap map) | |
SortedMap unmodifiableSortedMap(SortedMap map) | |
List singletonList(Object o) | 싱글톤 컬렉션 단 하나만의 객체를 저장하는 컬렉션을 만들 수 있다. 매개변수로 저장할 요소를 지정하면 해당 요소를 반환하는 컬렉션을 반환한다. 반환한 컬렉션은 변경할 수 없다. |
Set singleton(Object o) | |
Map singletonMap(Object key, Object value) | |
Collection checkedCollection(Collection c, Class type) | 한 종류의 객체만 저장하는 컬렉션 만들기 컬렉션에 지정된 종류의 객체만 저장할 수 있도록 제한할 수 있다. 제네릭스로 간단히 처리할 수 있지만 호환성 때문에 제공되는 메서드이다. |
List checkedList(List list, Class type) | |
Set checkedSet(Set s, Class type) | |
Map checkedMap(Map m, Class keyType, Class valueType) | |
Queue checkedQueue(Queue q, Class type) | |
NavigableSet checkedNavigableSet (NavigableSet s, Class type) |
|
SortedSet checkedSortedSet(SortedSet s, Class type) | |
NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType) |
|
SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType) |
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
public class Main {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List list = new ArrayList();
System.out.println(list);
Collections.addAll(list, 1,2,3,4,5);
Collections.rotate(list, 2); //오른쪽으로 두 칸씩 이동
System.out.println(list); // [4, 5, 1, 2, 3]
Collections.swap(list, 0, 2); //첫 번째와 세 번재를 교환(swap)
System.out.println(list); // [1, 5, 4, 2, 3]
Collections.shuffle(list); // 저장된 요소의 위치를 임의로 변경
System.out.println(list); // 무작위
Collections.sort(list); // 정렬
System.out.println(list); // [1, 2, 3, 4, 5]
Collections.sort(list,Collections.reverseOrder()); // 역순 정렬
System.out.println(list); // [5, 4, 3, 2, 1]
int idx = Collections.binarySearch(list, 3); // 3이 저장된 위치(index)를 반환
System.out.println(idx); // 2
System.out.println("max = " + Collections.max(list)); // max = 5
System.out.println("min = " + Collections.min(list)); // min = 1
System.out.println("min = " + Collections.max(list, Collections.reverseOrder())); // min = 1
Collections.fill(list, 9); // list를 9로 채운다
System.out.println(list); // [9, 9, 9, 9, 9]
//list와 같은 크기의 새로운 list를 생성하고 2로 채운다. 단, 결과는 변경불가
List newList = Collections.nCopies(list.size(), 2);
System.out.println(newList); // [2, 2, 2, 2, 2]
System.out.println(Collections.disjoint(list, newList)); // 공통요소가 없으면 true
Collections.copy(list, newList);
System.out.println(newList); // [2, 2, 2, 2, 2]
System.out.println(list); // [2, 2, 2, 2, 2]
Collections.replaceAll(list, 2, 1); // 모든 객체를 찾아 2와 같으면 1로 변경한다
System.out.println(list); // [1, 1, 1, 1, 1]
Enumeration e = Collections.enumeration(list); // 리스트를 Enumeration로 변환한다
ArrayList list2 = Collections.list(e); // Enumeration를 리스트로 변환한다.
System.out.println(list2); // [1, 1, 1, 1, 1]
}
}
댓글