본문 바로가기
java

collections framework - Collections 컬렉션 클래스 요약

by proudev 2023. 9. 4.

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

댓글