오늘의하루

Collections & Collection class 정리 본문

JAVA

Collections & Collection class 정리

오늘의하루_master 2022. 8. 23. 11:59

Collections는 Collection을 위한 static 메서드를 제공하는 것을 말합니다.

  • 컬렉션 채우기, 복사, 정렬, 검색 : fill(), copy(), sort(), binarySearch()

Collection의 동기화 - synchronizedXXX()

  • static Collection synchronizedCollection(Collection c)
  • static List synchonizedList(List list)
  • static Set synchonizedSet(Set s)
  • static Map synchronizedMap(Map m)
  • static SortedSet synchronizedSortedSet(SortedSet s)
  • static SortedMap synchronizedSortedMap(SortedMap m)

사용방법

List synList = Collections.synchronizedList(new ArrayList(...));
// ArrayList() = 동기화 되지 않은 리스트
// synchronized 를 사용해서 동기화로 만든다.
// synList = 동기화된 리스트 (Vector와 비슷하다.)

변경 불가(readOnly) Collection 만들기 - unmodifiableXXX()

  • 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)

싱글톤 Collection 만들기 - singletonXXX()

객체를 단 1개만 저장하게 만든다.

  • static List singletonList(Object o)
  • static Set singleton(Object o)  >> singletonSet이 아니다!
  • static Map singletonMap(Object o)

한 종류의 객체만 저장하는 Collection 만들기 - checkedXXX()

JDK 1.5 이후로 나온 제네릭스와 같은 기능을 하며 현재는 잘 사용되지 않는다.

  • 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)

사용방법

List list = new ArrayList();
List checkedList = checkedList(list, String.class); // String만 저장가능
checkedList.add("abc"); // ok
checkedList.add(new Integer(3)); // Error! String만 저장가능

최종 컬렉션 클래스 정리 및 요약

  • ArrayList, Vector는 배열 기반이다.
    • 이걸 기준으로 만든 게 Stack(Last In First Out) 구조이다.
  • 비순차적 추가 및 삭제의 효율이 나쁘다.
    • 이 문제를 해결하기 위해 LinkedList를 만들었다.
      • 이걸 기준으로 만든 게 Queue(First In First Out) 구조이다.
  • HashMap, Hashtable은 배열 기반과 LinkedList의 장점을 합쳐서 만든 것이다.
    • HashMap에서 Key만 빼서 만든 게 HashSet이다.
      • 순서가 없지만 순서를 만들고 싶을 때는 LinkedHashSet일 사용하면 된다.
  • LinkedList를 기준으로 TreeSet을 만들었다.
    • 중위 순회를 하게 되면 자동으로 정렬이 된다.
Comments