Collections 클래스

박영준·2023년 6월 20일
0

Java

목록 보기
94/111

1. 정의

Collection(컬렉션) 과 관련된 메서드를 제공

참고: 자바 컬렉션 (Java Collection, 컬렉션 프레임워크)

2. 메서드

1) 동기화 synchronized

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 syncList = Collections.synchronizedList(new ArrayList());
  • 멀티 쓰레드 프로그래밍에서
    • 여러 쓰레드가 동시에 하나의 객체에 접근할 수 있기 때문
    • 이때 데이터의 무결성을 유지하기 위해서, 공유되는 하나의 객체에 동기화가 필요

2) 변경불가 unmodifiable

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)
  • 멀티 쓰레드 프로그래밍에서
    • 해당 컬렉션을 읽기 전용으로 만들 수 있다
    • 여러 쓰레드가 하나의 컬렉션을 공유할 때, 데이터가 손상되는 것을 방지

3) 싱글톤 singleton

static List singletonList(Object o)
static Set singleton(Object o)		//SingletonSet이 아님
static Map singletonMap(Object key, Object value)
  • 단 하나의 객체만을 저장하는 컬렉션을 만들 수 있다

4) 한 종류의 객체만 저장 checked

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");
checkedList.add(new Integer(3));		// 에러 : ClassCastException 발생
  • 제네릭스로 컬렉션에 저장할 요소의 타입을 제한할 수도 있다.
    • 그러나, 호환성 문제로 인해 이런 메서드들을 제공한다
      (JDK1.5 이전에 작성된 코드를 사용할 때는 해당 메서드를 사용! 제네릭스는 JDK1.5부터 도입됨)

5) 리스트 랜덤 섞기 shuffle

참고: 자바 컬렉션 (Java Collection, 컬렉션 프레임워크) - 연습문제 - 3번

profile
개발자로 거듭나기!

0개의 댓글