swimminginthecode DIVE!

BACK/JAVA Basic

JAVA 자료 구조

dazz6 2025. 4. 16. 18:00

최근 알고리즘 문제를 풀면서 기본기가 많이 부족하다는 걸 몸소 느끼는 중인데, 

그중 하나가 자료구조!

매일 쓰는 List (그것도 ArrayList 만) 와 Map (그것도 HashMap 만) 말고는 전혀 사용하지 않았는데...

알고리즘 문제 풀이에서 훨~ 씬 쉽게 풀 수 있는 걸 저 두 개로만 풀어내려고 하니까 어렵기도 하고 비효율적이기도 하고

그래서 자료구조를 정리해 보려고 한다

 

1. List 리스트

순서가 있는 중복 가능한 컬렉션

 

요소들이 인덱스로 접근할 수 있기 때문에 순서가 중요한 데이터를 다룰 때 유용하다.

 

대표 구현체

종류 설명
ArrayList 동적 배열 기반, 인덱스 접근이 빠르지만 삽입 및 삭제가 비교적 느리다
LinkedList 연결 리스트 기반, 삽입 및 삭제가 빠르지만 인덱스 접근이 비교적 느리다

2. Set 셋

중복을 허용하지 않는 컬렉션

 

대표 구현체

종류 설명
HashSet 해시 테이블을 사용하여 데이터를 저장하고, 순서가 보장되지 않지만 검색 성능이 좋다
TreeSet 이진 탐색 트리 기반으로 구현되어 있고, 오름차순 또는 내림차순 순서를 보장한다

3. Map 맵

키-값 쌍으로 데이터를 저장하는 컬렉션

 

키는 중복될 수 없고, 값은 중복될 수 있다.

 

대표 구현체

종류 설명
HashMap 해시 테이블을 사용하여 데이터를 저장하고, 순서가 보장되지 않는다
TreeMap 이진 탐색 트리 기반으로 구현되어 있고, 키를 기준으로 오름차순 정렬된다

4. Stack 스택

후입선출(LIFO) 구조의 컬렉션

 

삽입과 삭제가 한쪽 (주로 스택의 상단) 에서만 일어난다. 

뒤에서부터 데이터를 처리해야 할 때 유용하다.

 

대표 구현체

종류 설명
Stack 최근에는 잘 사용하지 않는다
Deque 스택을 구현할 수 있는 인터페이스이다

5. Queue 큐

선입선출(FIFO) 구조의 컬렉션

 

삽입과 삭제가 양쪽 끝 (주로 큐의 앞부분에서 삭제, 뒷부분에서 삽입) 에서 일어난다.

순차적으로 데이터를 처리해야 할 때 유용하다

 

대표 구현체

종류 설명
LinkedList 큐의 구현체로 사용할 수 있는 LinkedList 클래스이다
PriorityQueue 유선순위 큐로, 기본값인 오름차순으로 처리된다

요약

종류 순서 중복 특징
List O O  
Set 구현체에 따라 다름 X  
Map 구현체에 따라 다름 키는 불가, 값은 가능 키-값
Stack O O LIFO
Queue O O FIFO

'BACK > JAVA Basic' 카테고리의 다른 글

JAVA 22  (0) 2024.07.30
JAVA 21  (0) 2024.07.03
JAVA 20  (0) 2024.05.09
JAVA 19  (0) 2024.05.08
JAVA 18  (0) 2024.05.07