[java] Collection

sesame·2021년 8월 4일
0

Java

목록 보기
19/25

Collection 프레임워크

객체를 그룹 단위의 데이터로 저장하는 기본적인 자료구조들의 모음

종류

> List 인터페이스 메소드

객체추가

  • boolean add(E e) : 주어진 객체를 맨 끝에 추가
  • void add(int index, E element) : 주어진 인덱스에 객체 추가
  • set(int index, E element) : 주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈

객체 검색

  • boolean contains(Object o) : 주어진 객체가 저장되어 있는지 여부 확인
  • E get(int index) : 주어진 인덱스에 저장된 객체를 리턴
  • boolean isEmpty() : 컬렉션이 비어 있는지 조사(비어있으면 true, 값 존재 false)
  • int size() : 저장되어 있는 전체 객체 수를 리턴

객체 삭제

  • void clear() : 저장된 모든 객체를 삭제
  • E remove(int index) : 주어진 인덱스에 저장된 객체를 삭제
  • boolean remove(Object o) : 주어진 객체를 삭제

> Set 인터페이스 메소드

객체추가

  • boolean add(E e) : 주어진 객체 e 를 추가

객체 검색

  • boolean contains(Object o) : 주어진 객체가 저장되어 있는지 여부 확인
  • boolean isEmpty() : 컬렉션이 비어 있는지 조사
  • int size() : 저장되어 있는 전체 객체 수를 리턴
  • Object[] toArray() : 배열로 반환
  • Object[] toArray(Object[] a) : 지정한 배열의 클래스 타입으로 배열로 반환

객체 삭제

  • void clear() : 모든 객체를 삭제
  • boolean remove(Object o) : 요청된 객체를 삭제
  • boolean removeAll(Collection c) : 저장된 모든 객체를 삭제

> Map 인터페이스 메소드

객체추가

  • V put(K key, V value) 주어진 키와 값을 추가

객체 검색

  • V get(Object key) : 키의 값을 리턴
  • boolean contains(Object key) : 키가 있는지 여부
  • boolean containsValue(Object value) : 값이 있는지 여부
  • Set<Map.Entry<K,V>> entrySet() : 모든 엔트리 객체를 Set에 담아 리턴
  • boolean isEmpty() : 컬렉션이 비어 있는지 조사
  • int size() : 저장되어 있는 전체 객체 수를 리턴
  • Set keySet() : 모든 키를 Set 객체에 담아 리턴
  • Collenction values() : 모든 값을 Collection 객체에 담아 리턴

객체 삭제

  • void clear() : 저장된 엔트리객체를 삭제
  • V remove(Object key) : 주어진 키와 일치하는 엔트리객체를 삭제

> 동기화된 Collection

Collction의 프레임워크 대부분이 싱글 쓰레드 환경에서 사용할 수 있도록 설계되어있지만, Vector와 Hashtable은 동기화(synchronized) 메소드로 구성되어 있기 때문에 멀티 쓰레드 환경에서 사용할 수 있게 설계되어 멀티 쓰레드 환경에 안전하다.

ArrayList, HashSet, HashMap은 멀티 쓰레드 환경에서 안전하지 않기 때문에 자바에서 synchronized 메소드를 제공한다.

List
synchronizedList(List list) : List를 동기화된 List로 리턴

Map<K,V>
synchronizedMap(Map<K,V> m) : Map을 동기화된 Map으로 리턴

Set
synchronizedSet(Set s) : Set을 동기화된 Set으로 리턴

하지만 단점이 있다

동기화된 Collection은 멀티 쓰레드 환경에서 하나의 쓰레드가 요소를 안전하게 처리하도록 도와주지만, 쓰레드가 작업을 할 때 락이 발생하기 때문에 전체 요소를 빠르게 처리하지는 못한다.

이를 위해 java.util.concurrent 패키지에서 ConcurrentHashMap과 ConcurrentLinkedQueue를 제공한다.

0개의 댓글

관련 채용 정보