카테고리 없음

[JAVA] Collections

리신 2023. 2. 1. 20:39
반응형

Collections 를 배우기 전, 컬렉션의 중복되는 의미들을 살펴봅시다.

  • collection: 객체가 저장되고 반복되는 자료 구조를 나타냄
  • Collection: Set, List, Queue가 상속받는 java.util.Collection 인터페이스이다.
    • 이는 상속임. 구현이 아니라. 즉, Collection를 직접 구현한 것은 없음. 
  • Collections(대문자 C, s로 끝남):  collections에 사용할 정적 유틸리티 메소드의 모음이 있는 java.util.Collections 클래스이다.

 

특징

- 컬렉션 프레임워크 타입의 객체에서 사용하거나 컬렉션을 반환하는 static 메소드들로 구성되어있음.

     →   쉽게 말해 컬렉션 프레임워크 타입의 객체(중복되는 의미에서 1번)에 대한 객체생성, 정렬, 병합, 검색 등의 알고리즘이 구현되어있는 클래스임.
- 반환된 컬렉션에서 add, setter와 같은 수정자를 허용하지 않고UnsupportedOperationException을 던짐 →  즉, 수정을 허용하지 않음.


컬렉션 동기화

멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 동시에 접근하기 때문에 데이터 일관성을 유지하기 위한 객체 동기화가 필요하다.
이를 위해 Collections 클래스의 동기화메서드(synchronized)를 사용해 동기화 처리가 가능하다.

 

사용방법

List syncList = Collections.synchronizedList (new ArrayLisr(...));

 


 변경불가 컬렉션 만들기

위에서 말했듯이 멀티쓰레드 프로그래밍에서는 하나의 객체를 여러 쓰레드가 사용할 수 있기 때문에 데이터 손상을 방지를 할 필요가 있다.

unmodifiable메서드를 사용하여 데이터를 보호하기 위해 컬랙션을 변경하지 못하도록 할 수 있다.

 

메소드

static Collection unmodifiableCollection  (Collection c)
static List unmodifiableList   (List list)
... 등등

 싱글톤 컬렉션

단 하나의 객체만을 저장하는 컬렉션을 생성하고 싶을 때 사용한다.

이렇게 생성된 컬렉션을 변경이 불가능하다. singleton()

 

메소드

static List singletonList(Object o)
static Set singletonSet(Object o)
static Map singletonMap(Object key, Object value)

 한 종류의 객체만 저장하는 컬렉션 만들기

컬렉션에 대체로 하나의 종류의 객체만을 저장하며, 지정된 객체만을 저장하도록 제한을 두고 싶을 때 사용한다.
checked()

 

사용방법

List list = new ArrayList();
List checkedList = checkedList (list, String.class); // String만 저장가능
chekedList.add("abc"); // OK.
chekedList.add(new Integer(3)) // 에러. ClassCastException발생

사용방법은 위와 같이 두 번째 매개변수에 저장할 객체의 클래스를 지정하면 된다.

 

컬렉션으로 저장할 요소의 타입을 제한한느 것은 지네릭스로 간단히 처리할 수 있는데도 이런 메서드들을 제공하는 이유는 호환성 때문이다.

지네릭스는 JDK1.5부터 도입된 기능이므로 JDK1.5이전에 작성된 코드를 사용할 때는 이메서드들이 필요 할 수 있다.

 

 

참고자료 : JAVA의 정석

반응형