언어/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 인터페이스를 상속받지 않는다. - 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()(조회+삭제)
실습코드는 깃허브에 있습니다:)
반응형