ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Collections & Collection class 정리
    JAVA 2022. 8. 23. 11:59
    728x90
    반응형

    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을 만들었다.
      • 중위 순회를 하게 되면 자동으로 정렬이 된다.
    728x90
    반응형
Designed by Tistory.