Collections - 컬렉션을 위한 메서드(static)를 제공
1. Objects
2. Arrays
3. Collections
1. 컬렉션 채우기, 복사, 정렬, 검색 - fill(), copy(), sort(), binarySearch() 등
2. 컬렉션의 동기화 - synchronizedXXX()
static Collection 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)
사용법 예를 들면
매개변수에 동기화 되지 않는 List인 ArrayList를 Collections.synchronizedList에 넣으면 동기화된 List를 반환한다.
아래의 동기화된 List는 Vector 클래스를 사용하는 것과 같다.
List syncList = Collections.synchronizedList(new ArrayList(...));
3. 변경불가(readOnly) 컬렉션 만들기 - unmodifiableXXX()
해당 컬렉션은 변경할 수 없게 만든다. 읽기 전용으로(final과 유사함)
static Collection 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()
(중요) 객체 1개만 저장
static List singletonList(Object o)
static Set singleton(Object o) // singletonSet이 아님
static Map singletonMap(Object key, Object value)
5. 한 종류의 객체만 저장하는 컬렉션 만들기 - checkedXXX()
static Collection checkedCollection(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)
자료구조는 다양한 객체를 저장할 수 있는데 checkedXXX() 매서드를 사용하면 지정한 한 종류만 저장한다.
이는 지네릭스와 유사하다. 그래서 지네릭스가 나온 시점의 자바 버전에서는 checked보단 제네릭스를 쓴다.
여기서는 checkedXXX()가 있다는 정도만 알아도 될 거 같다.
아래는 checkedXXX() 매서드를 사용하는 방법이다.
List list = new ArrayList();
List checkedList = checkedList(list, String.class); // String만 저장 가능
checkedList.add("abc") // OK
checkedList.add(new Integer(3)); // 에러, ClassCastException발생
예제 1
List list = new ArrayList();
System.out.print(list); // [] 아직은 없음
Collection.addAll(list, 1,2,3,4,5);
System.out.print(list) // [1,2,3,4,5]
Collection.rotate(list, 2); // 반시계 반향으로 두번 회전
System.out.print(list) // [4,5,1,2,3]
Collection.swap(list, 0, 2) // 첫 번째와 세번째를 교환
System.out.print(list) // [1,5,4,2,3]
Collection.shuffle(list); // 저장된 요소의 위치를 임의로 바꾼다
System.out.print(list) // [5,4,1,2,3]
Collection.sort(list,reverseOrder()); // 역순정렬
System.out.print(list) // [5,4,3,2,1]
Collection.sort(list); // 정렬
System.out.print(list) // [1,2,3,4,5]
예제 2
Collection.sort(list); 정렬
int idx = binarySearch(list,3) binarySearch해서 원하는 값을 얻고 싶으면 그전에 정렬이 되어 있어야한다.
System.out.println("max= "+ Collection.max(list)); 최대값
System.out.println("min= "+ Collection.min(list)); 최솟값
System.out.println("min= "+ Collection.max(list, reverseOrder())); 최솟값
Collection.fill(list,1); list를 1로 채운다.
List newList = nCopies(list.size(), 2); list의 같은 크기의 새로운 list를 생성하고 2로 채운다
System.out.println("newList= " + newList);
System.out.println(disjoint(list,newList)); 두 요소 중에 공통요소가 없으면 참
Collection.copy(list, newList); newList 요소를 list에 복사한다.
replaceAll(list, 2, 1); list에 2 요소를 1로 다 바꾼다.
Enumeration e = Colleciton.enumeration(list); iterator와 같다.
ArrayList list2 = list(e);
System.out.println("list=" + list2);
'java' 카테고리의 다른 글
java.time패키지 (0) | 2023.10.20 |
---|---|
collections framework - HashMap (0) | 2023.09.03 |
collections framework - TreeSet (0) | 2023.09.02 |
collections framework - HashSet (0) | 2023.09.02 |
collections framework - Comparator 와 Comparable (0) | 2023.09.02 |
댓글