// 자료구조 (Data Structure)
// 자료구조의 선택 --> 각 자료구조는 모두 장/단점이 존재함
// 장단점마다 다 정리돼있음... 잘써보자
// 주요 자료구조 API 인터페이스와 클래스
// 1. List 인터페이스: 순서가 있는 데이터를 저장하며 중복을 허용합니다.
// ## 주로 ArrayList는 검색이 많은 경우에 사용 / LinkedList는 잦은 삽입/삭제 시 사용
// ★★ ArrayList: 동적 배열을 구현한 클래스
// - 크기 조절 및 빠른 임의 액세스가 필요한 경우에는 ArrayList가 효율적일 수 있지만,
// - 중간에 요소를 자주 추가 또는 삭제해야 하는 경우에는 다른 자료구조(예: LinkedList)를 고려할 필요가 있음!!
//
// ** 장점
// - 빠른 랜덤 액세스 : 특정위치에 접근해서 정보를 뽑아오는게 아주 빠름
//
// ** 단점
// - 배열의 길이 조절 어려움 : 요소를 추가 또는 제거할 때 발생하는 오버헤드가 있음 (ex. 배열 길이 2배 해주는 등...)
// - 값의 삭제가 어려움 : 중간 또는 처음에 요소를 추가하거나 삭제하는 작업은 배열의 재배열로 인해 굉장히 느림
(ex. 삭제 개빡셌지?)
// - 값의 추가가 어려움(특히 중간에 넣으려고 할 때)
: 삭제할때처럼 값들을 다 밀어넣고 중간에 변환하고 싶은 값만 바꿔야함
// ★★ LinkedList: 이중 연결 리스트를 구현한 클래스
//
// ** 장점
// - 삽입 및 삭제 작업에 빠름
//
// ** 단점
// - 배열의 어떠한 값을 뽑아내고 싶을 때, 첫 연결고리부터 순서대로 돌아야함 (시간이 아주 오래걸린다구)
//
// # Vector: ArrayList와 유사한 클래스로, 스레드 안전한 버전입니다.
// # Stack: 스택 자료구조를 구현한 클래스입니다.
// 2.Set 인터페이스: 중복을 허용하지 않는 데이터를 저장합니다.
//
// # HashSet: 해시 테이블을 기반으로 한 Set 구현체로, 순서가 없습니다.
// # LinkedHashSet: 입력 순서를 유지하는 HashSet입니다.
// # TreeSet: 이진 검색 트리를 기반으로 한 Set 구현체로, 정렬된 순서로 데이터를 저장합니다.
// 3.Map 인터페이스: 키-값(key-value) 쌍을 저장합니다.
//
// HashMap: 해시 테이블을 기반으로 한 Map 구현체로, 순서가 없습니다.
// LinkedHashMap: 입력 순서를 유지하는 HashMap입니다.
// TreeMap: 이진 검색 트리를 기반으로 한 Map 구현체로, 키를 기준으로 정렬된 순서로 데이터를 저장합니다.
// 4. Queue 인터페이스: 큐 자료구조를 나타내며, FIFO(First-In-First-Out) 순서를 따릅니다.
//
// # LinkedList: 큐와 덱(Double-ended Queue)을 구현하기 위해 사용됩니다.
// # PriorityQueue: 우선순위 큐를 구현한 클래스로, 우선순위 순서로 데이터를 처리합니다.
// 5. Deque 인터페이스: 양쪽 끝에서 데이터를 추가하거나 제거할 수 있는 자료구조입니다.
//
// # LinkedList: 양쪽에서 데이터를 추가 및 제거할 수 있는 덱 구현체입니다.
// 6. Collections 클래스: 다양한 유틸리티 메서드를 제공하는 클래스로, 정렬, 검색, 복사, 역전 등의 작업을 수행할 수 있습니다.
// 7. Arrays 클래스: 배열과 관련된 유틸리티 메서드를 제공하는 클래스로, 배열을 다루는 다양한 작업을 지원합니다.
// 8. Iterator 인터페이스: 자료구조를 순회(iterate)하는 데 사용되는 인터페이스로, Iterator 객체를 통해 요소에 접근합니다.
'JAVA > DAY 18 _ 23.09.11' 카테고리의 다른 글
List 장단점 비교 (0) | 2023.09.11 |
---|---|
Linked List 활용 (0) | 2023.09.11 |
Generic 활용 (0) | 2023.09.11 |
Generic3 (0) | 2023.09.11 |
Generic2 (0) | 2023.09.11 |