Collections - 컬렉션을 위한 메서드(static)를 제공
1. 컬렉션 채우기 fill(), 복사 copy(), 정렬 sort(), 검색binarySearch() 등
2. 컬렉션 동기화 - synchronizedXXX()
static collcetion synchronizedCollection(Collection c)
static list synchronizedList(List list)
static Set synchronizedSet(Set s)
static Map synchronizedMap(Map m)
static SortedSet synchronizedSortedSet(SortedSet s)
static SortedMap synchronizedSortedMap(SortedMap m)
사용방법
syncList: 동기화된 List ≒ Vector
new ArrayList(...): 동기화되지않은 List
List syncList = Collections.synchronizedList(new ArrayList(...));
3. 변경불가(readOnly) 컬렉션 만들기 - unmodifiableXXX()
static collcetion unmodifiableCollection(Collection c)
static list unmodifiableList(List list)
static Set unmodifiableSet(Set s)
static Map unmodifiableMap(Map m)
static NavigableSet unmodifiableNavigableSet(NavigableSet s)
static SortedSet unmodifiableSortedSet(SortedSet s)
static NavigableMap unmodifiableNavigableMap(NavigableMap m)
static SortedMap unmodifiableSortedMap(SortedMap m)
4. 싱클톤 컬렉션 만들기 - singletonXXX()
static List singletonList(Object o)
static Set singleton(Object o) // singletonSet이 아님에 주의
static Map singletonMap(Object key, Object value)
5. 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()
static Collcetion checkedCollcetion(Collection c, Class type)
static List checkedList(List list, Class type)
static Set checkedSet(Set s, Class type)
static Map checkedMap(Map m, Class keyType, Class valueType)
static Queue checkedQueue(Queue queue, Class type)
static NavigableSet checkedNavigableSet(NavigableSet s, Class type)
static SortedSet checkedSortedSet(SortedSet s, Class type)
static NavigableMap checkedNavigableMap(NavigableMap m, Class keyType, Class valueType)
static SortedMap checkedSortedMap(SortedMap m, Class keyType, Class valueType)
checkedList를 사용하면 한 가지 타입만 저장가능하다
list에는 String 타입만 저장가능하다
List list = new ArrayList();
List checkedList = checkedList(list, String.class); // String만 저장가능
checkedList.add("abc"); // OK
checkedList.add(new Integer(3)); // 에러, ClassCastException 발생
코드
import java.util.*;
import static java.util.Collections.*; // Collections를 생략가능하게 해줌
public class CollectionsTest {
public static void main(String[] args) {
List list = new ArrayList();
System.out.println(list);
addAll(list, 1,2,3,4,5); // Collections.addAll(list, 1,2,3,4,5);
System.out.println(list);
rotate(list, 2); // 오른쪽으로 두 칸씩 이동
System.out.println(list);
swap(list, 0, 2); // 첫 번째와 세 번째를 교환(swap)
System.out.println(list);
shuffle(list); // 저장된 요소의 위치를 임의로 변경
System.out.println(list);
sort(list, reverseOrder()); // 역순 정렬 reverse(list);와 동일
System.out.println(list);
sort(list); // 정렬
System.out.println(list);
int idx = binarySearch(list, 3); // 3이 저장된 위치(index)를 반환
System.out.println("index of 3 = " + idx);
System.out.println("max="+max(list));
System.out.println("min="+min(list));
System.out.println("min="+max(list, reverseOrder()));
fill(list, 9); // list를 9로 채운다.
System.out.println("list="+list);
// list와 같은 크기의 새로운 list를 생성하고 2로 채운다. 단, 결과는 변경불가
List newList = nCopies(list.size(), 2);
System.out.println("newList="+newList);
System.out.println(disjoint(list, newList)); // 공통요소가 없으면 true
copy(list, newList);
System.out.println("newList="+newList);
System.out.println("list="+list);
replaceAll(list, 2, 1);
System.out.println("list="+list);
Enumeration e = enumeration(list);
ArrayList list2 = list(e);
System.out.println("list2="+list2);
}
}
[]
[1, 2, 3, 4, 5]
[4, 5, 1, 2, 3]
[1, 5, 4, 2, 3]
[2, 5, 3, 1, 4]
[5, 4, 3, 2, 1]
[1, 2, 3, 4, 5]
index of 3 = 2
max=5
min=1
min=1
list=[9, 9, 9, 9, 9]
newList=[2, 2, 2, 2, 2]
true
newList=[2, 2, 2, 2, 2]
list=[2, 2, 2, 2, 2]
list=[1, 1, 1, 1, 1]
list2=[1, 1, 1, 1, 1]
컬렉션 리스트 정리
반응형