본문 바로가기
Back-end/자료구조

Collection (List, Set, Map)

by sgyeong 2024. 4. 17.

 

 

 

인터페이스 구현 클래스 특징
List LinkedList
Stack
Vector
ArrayList
순서가 있는 데이터의 집합, 데이터의 중복을 허용한다.
Set HashSet
TreeSet
순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않는다.
Map HashMap
TreeMap
HashTable
Properties
키(key)와 값(value)의 쌍으로 이루어진 데이터의 집합
순서는 유지되지 않고, 키는 중복을 허용하지 않으며 값의 중복을 허용한다.

 

 

Stack

- 데이터의 삽입과 추출이 후입선출(LIFO) 구조로 되어 있다.
- push() : 데이터 삽입
- pop() : 데이터 추출

- peek() : 데이터를 삭제하지 않고 추출만 함
- search() : stack으로부터 데이터를 검색할 때 사용

 

Vector

- 자동으로 동기화를 보장해준다.
- ArrayList에 동기화가 보장되도록 최적화한 클래스이다.

- addElement() : 데이터 삽입
- elementAt() : 데이터 추출. index에 해당하는 객체를 얻어낸다.
- size() : vector 내에 존재하는 객체의 수를 얻어낼 때 사용한다.
- insertElementAt() : vector 중간에 삽입

- setElementAt() : vector 내에 존재하는 데이터를 수정할 때 사용
- indexOf() : vector 내에 데이터를 검색할 때 사용. index를 반환한다.

- contains() : 데이터의 존재 유무 확인

 

ArrayList
- 동기화를 보장하지 않는다.
- 배열에 동적 메모리 증가 기능을 구현한 클래스이다.
- add() : 데이터 삽입
- get() : 데이터 추출
- toArray() : ArrayList로부터 배열을 얻어낼 때 사용
- contains() : 데이터의 존재 유무 확인
- size() : ArrayList 내에 존재하는 객체의 수를 얻어낼 때 사용한다.

 

Set
- 집합적인 개념의 Collection
- 순서의 의미가 없다.
- 데이터를 중복해서 포함할 수 없다.

 

HashSet
- add() : 데이터 삽입
- next() : 데이터 추출
- remove() : 데이터 삭제
- contains() : 데이터 포함 여부 확인
- size() : HashSet 내에 존재하는 객체의 수를 얻어낼 때 사용한다.

 

Map

- List와 Set이 순서나 집합적인 개념의 인터페이스라면 Map은 검색의 개념이 있는 인터페이스이다.
- Map은 데이터를 삽입할 때 key와 value의 형태로 삽입되며, key를 사용해서 value를 얻을 수 있다.

 

Hashtable, HashMap의 공통점
- 내부적으로 모두 Hash 기법을 이용한다.
- Map 인터페이스를 구현하고 있다.
- key와 value를 이용해서 데이터를 관리한다.

 

Hashtable, HashMap의 차이점

- Hashtable은 동기화가 보장된다.
- HashMap은 동기화가 보장되지 않는다.

 

Hashtable, HashMap, HashSet

- Hashtable과 HashMap은 둘 다 Map인터페이스를 구현하고 있다.
- HashSet은 내부적으로 Hash기법을 사용하지만 Set인터페이스를 구현하고 있다.

 

HashMap
- put() : 데이터 삽입
- get() : 데이터 추출. argument값은 key를 사용한다.

 

HashTable
- put() : 데이터 삽입
- get() : 데이터 추출. argument값은 key를 사용한다.

 

TreeMap
- key와 value로 데이터를 관리한다.
- key를 기준으로 오름차순 정렬된다.
- Map 인터페이스를 상속한 SortedMap 인터페이스를 구현한 클래스이다.

 

TreeSet
- Set인터페이스를 상속한  SortedMap 인터페이스를 구현한 클래스이다.

- 데이터들이 자동으로 오름차순 정렬된다.

 

 

 

'Back-end > 자료구조' 카테고리의 다른 글

Stack  (0) 2025.09.09
Graph  (3) 2025.08.29
Vector  (0) 2024.04.18
LinkedList  (0) 2024.04.17
배열, List, ArrayList  (0) 2024.04.17