컬렉션 프레임워크

한상우·2022년 10월 4일
0

java

목록 보기
6/16
post-thumbnail

Q.컬렉션 프레임워크에 대해서 설명해주세요

Java Collections FrameWork
-> 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합으로 인터페이스로 구현된다

Collection에는 크게 3가지 인터페이스로 나뉘어있다.
List, Queue, Set


(출처: https://st-lab.tistory.com/142)

// Collection

public interface Collection<E> extends Iterable<E>

// Iterable

public interface Iterable<T> {
    /**
     * Returns an iterator over elements of type {@code T}.
     *
     * @return an Iterator.
     */
    Iterator<T> iterator();

// Iterator 내부 메소드

  • boolean hasNext()
    - 다음번 요소가 존재 하는지 여부
  • E next()
    - 다음 요소를 리턴
  • default void remove()
    - iterator가 반복한 마지막 요소를 제거

List

  • 배열의 경우 선언할 때 할당한 범위밖에 사용하지 못하기 때문에 나옴
  1. ArrayList
    • Object[] 배열을 사용하면서 내부 구현을 통해 동적으로 관리
    • 요소 접근에 성능 좋음
    • 삽입, 삭제에서 성능 나쁨
    • 동기화가 제공되지 않음
  2. LinkedList
    • 데이터와 주소로 이루어진 Node를 만들어 서로 연결
    • 요소 접근에 성능 나쁨
    • 삽입, 삭제 성능 좋음
  3. Vector
    • ArrayList와 거의 동일
    • 항상 동기화를 지원
    • 단일 쓰레드일 경우 ArrayList 보다 낮은 성능

Queue

  1. LinkedList
  2. ArrayDeque
  3. PriorityQueue

Deque는 Queue를 상속받고 있다.
public interface Deque<E> extends Queue<E>

LinkedList는 List와 Deque를 모두 구현하고 있다

public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

Deque 또는 Queue를 LinkedList 처럼 Node 객체로 연결해서 관리하길 원한다면 LinkedList를 쓰면 된다.

Object[] 배열로 구현되어 있는 것은 ArrayDeque 이다

PriorityQueue는 우선순위가 있는 큐이다. default로는 작은 수가 우선순위를 가지게 된다

Queue<String> linkedQueue = new LinkedList<>();
Queue<String> arrayQueue = new ArrayDeque<>();
Queue<String> priorityQueue = new PriorityQueue<>();

Set

  • 데이터를 중복해서 저장 X
  • 순서 보장하지 않음
  1. HashSet
    • 가장 기본적인 Set이다
    • 중복되는 값을 찾는 경우에 유용하게 쓰일 수 있다
  2. LinkedHashSet
    • 순서를 보장해준다
  3. TreeSet
    • 정렬을 해준다
HashSet<String> hashSet = new HashSet<>();
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
TreeSet<String> treeSet = new TreeSet<>();

Map

Collection 인터페이스를 상속받지 않음.

  • 키, 값 쌍으로 이루어진 데이터 집합
  • 순서 보장하지 않음
  • key는 중복 허용X, value는 중복 허용
  1. HashTable
    • 동기화 지원
  1. HashMap
    • 순서 보장 x
    • 동기화 지원 x
  1. TreeMap
    • 키 값에 의해 정렬

정리

자바 컬렉션 프레임워크란 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)하기 위해서 사용하는 라이브러리다.
그 기본 인터페이스에 List, Queue, Set 이 있다

profile
안녕하세요 ^^

0개의 댓글