반응형
자료구조(Data Structure). 구글링을 하면 '데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미'한다는 위키백과의 글이 가장 먼저 검색된다.
그리고 자료구조를 검색하면 알고리즘 문제를 푸는 분들이 많다. 자료구조와 알고리즘은 뗄 수 없는 관계이기 때문이다. 어떤 알고리즘 문제를 해결하기 위해서는 문제를 파악한 다음 문제에 사용할 적합한 자료구조를 선택한다.
예를 들어 비슷해보이는 List일지라도 순서가 있는 데이터들의 삽입과 삭제가 빈번하다면 LinkedList를, 그렇지 않을 경우네는 ArrayList를 사용한다. 각 알고리즘의 문제에서, 그리고 실제 서비스 로직을 구현하는 상황에서도 각 자료구조 별 특징을 정확하게 이해하고 있어야 적합한 자료구조를 사용할 수 있다.
가장 근본이 되는 자료구조를 이해하기 위해 Java의 대표적인 자료구조인 Collection에 대해 글로서 정리해보려고 한다.
형태에 따른 자료구조 분류
1. 선형 자료구조(Linear Data Structure)
- 데이터가 일렬로 연결된 형태
- List(리스트), Queue(큐), Deque(덱)
2. 비선형 자료구조(Nonlinear Data Structure)
- 선형 자료구조의 반대로 데이터가 일렬로 쭉 연결된 것이 아닌, 각 요소가 여러 개의 요소와 연결된 나뭇가지와 비슷한 형태
- Graph(그래프), Tree(트리)
3. 기타(집합) 자료구조
- 데이터가 연결된 형태가 아닌 것으로 선형 자료구조와 비선형 자료구조 어디에도 해당되지 않는 자료구조
- Set(집합)
Java Collection Framework
- Java에서 비슷한 류의 데이터들을 쉽게 다루기 위해 모아놓은 것들을 가공 및 처리 할 수 있도록 지원하는 자료구조
- Java에서 제공하는 Collection은 크게 3가지 인터페이스로 나뉘어있다.
- List(리스트)
- Queue(큐)
- Set(집합)
- 실선은 확장 관계이고, 점선은 구현관계이다.
- Collection을 구현한 클래스 및 인터페이스들은 모두 java.util 패키지에 있다.
- 파란 상자는 interface, 초록 상자는 class
- List, Queue, Set의 3가지의 형태에 따른 자료구조들이 구체화되어,즉 각각 '구현'이 되어 class로 제공된다.
- 정리하면 초록 상자가 '구현된 자료구조' 인 것이다.
각 인터페이스에 대한 내용은 곧 정리해..업로드하겠습니다...
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] 연결 리스트(LinkedList) 자료구조 알아보기 & Java 예제 코드 (0) | 2023.06.04 |
---|---|
[자료구조] 배열(Array) 자료구조 알아보기 & Java 예제 코드(+ ArrayList) (0) | 2023.06.04 |
[자료구조] 우선순위 큐(Priority Queue)와 힙(Heap) (0) | 2022.12.25 |
[백준] 10828 스택 자바 문제 풀이(시간 초과 해결) (0) | 2022.07.24 |
[기초 자료구조] Stack(스택) - Array 기반 / LinkedList 기반 (0) | 2022.07.24 |