언어/Java

[짧은글] 컬렉션 프레임워크 (Collections Framework)

뭉지(moonz) 2021. 10. 4. 14:59
반응형

이번 포스팅에서는 자바의 컬렉션 프레임워크에 대해 간단히 정리해보려 합니다.  (짧은 글!)

컬렉션 프레임워크는 JDK 1.2부터 등장했는데요, 컬렉션 프레임워크는 대량의 데이터 군을 표현하고 이를 효율적으로 다룰 수 있도록 제공하는 표준화된 방법을 제공합니다.

이미 저희가 많이 사용하고 있는 자료구조를 떠올려보면 ArrayList, HashMap 등등이 떠오르는데요, 이것들은 각 인터ㅔ이스의 구현체입니다.


자바 컬렉션 프레임워크

👉자바 컬렉션 프레임워크란, 대량의 데이터를 효율적으로 처리할 수 있는 기능을 제공하는 클래스의 집합! 을 의미한다.

 

👉데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘 구조화해서 클래스로 구현한 것이다.

 

👉주로 사용되는 인터페이스  (java.util.~)

  • List<E> 
  • Set<E>
  • Map<K, V>
  • Queue<E>

우: Collection 프레임워크를 상속받지 않는 Map 인터페이스

  • 해당 인터페이스는 Collection 인터페이스를 상속받는다.
    단, Map 인터페이스는 구조적 특성으로 독립성으로 정의되어 있기 때문에 Collection 인터페이스를 상속받지 않는다.
  • java.util.Map은 제네릭타입으로 Key와 Value를 선언한다.

 

List<E>    인터페이스

  • 인덱스를 관리하는 순서 개념이 있고, 중복을 허용하는 데이터의 집합
  • ArrayList, LinkedList, Vector

 

ArrayList<E>

  • List 인터페이스의 구현체로, 단방향 포인터 구조이다.
  • 각 데이터의 인덱스를 갖고 있어 조회 성능이 Good이다.
  • 내부적으로 배열을 이용하여 요소를 저장한다.

 

  • 주요 메서드
    • add(E e)
    • add(int index, E e)
    • size()

 

LinkedList<E>

  • List 인터페이스의 구현체로, 각 데이터가 노드와 포인터로 구성되어 연결되어있는 방식의 구조
  • 중간 데이터를 삭제, 삽입하기 용이하다.
  • 주요 메서드
    • offer(E o)
    • peek()  : 첫번째 요소를 리턴
    • poll() : 첫번째 요소를 리턴 후 삭제
    • subList()

 

 

Vector<E>

  • ArrayList와 동일한 자료 구조와 기능으로 동작
  • ArrayList와 다르게 Thread-Safe 하다  (Vector는 동기화된 메소드로 구성되어 있다.)
  • Thread가 한 개인 경우에도 동기화를 하기 때문에 ArrrayList에 비해 성능이 ↓

 

Stack<E>

  •  알고리즘 문제를 풀 때 많이 사용하고 있는 자료구조이다.
  • Vector 클래스를 상속받아 전형적인 Stack 메모리 구조를 제공한다.
  • 후입선출 (LIFO) 구조 : 나중에 저장된 데이터가 먼저 나오는 구조
  • 주요 메서드
    • push(E e)
    • peek()(조회)
    • pop()(조회+삭제)

 


실습코드는 깃허브에 있습니다:)

 

반응형