Stack
💡 후입선출(LIFO, Last-In-First-Out) 방식으로 데이터를 저장하는 자료구조
- 가장 마지막에 추가된 항목이 가장 먼저 제거됩니다. Stack은 push() 메서드를 사용하여 항목을 추가하고, pop() 메서드를 사용하여 가장 최근에 추가된 항목을 제거합니다. 예를 들어, 함수 호출 스택은 Stack을 이용하여 구현됩니다.
- 웹브라우저 방문한 주소를 스택에 저장해 두고 앞으로가기/ 뒤로가기 버튼, 괄호 짝 맞추기
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// 스택에 데이터 추가
stack.push("A");
stack.push("B");
stack.push("C");
// 스택에서 데이터 꺼내기
System.out.println(stack.pop()); // C
System.out.println(stack.pop()); // B
System.out.println(stack.pop()); // A
}
}
Queue
💡 선입선출(FIFO, First-In-First-Out) 방식으로 데이터를 저장하는 자료구조입니다.
- 가장 먼저 추가된 항목이 가장 먼저 제거됩니다. Queue는 enqueue() 메서드를 사용하여 항목을 추가하고, dequeue() 메서드를 사용하여 가장 오래된 항목을 제거합니다. 예를 들어, 메시지 큐는 Queue를 이용하여 구현됩니다.
- 캐시에서 데이터를 삭제할 때 오래된 데이터를 먼저 삭제, 대기열에서 대기 순으로 처리되는 점
- 사용하는 방법?? 선착순을 만드는 방법…
Array
💡 데이터를 인덱스를 통해 접근하는 방식의 자료구조입니다.
- 배열은 연속된 메모리 공간에 데이터를 저장, 인덱스를 사용하여 데이터에 빠르게 접근할 수 있다.
- 동적 변경이 어렵다(크기가 고정되어있다.)
- 배열의 크기는 초기화할 때 지정되며, 이후에 변경할 수 없다. 배열은 인덱스를 사용하여 임의의 위치에 있는 데이터에 빠르게 접근할 수 있기 때문에, 검색이나 정렬 등에 적합합니다.
- 삽입, 삭제와 같은 동적인 연산에는 불리 → 링크드리스트
Linked List
💡 데이터와 다음 노드의 주소를 함께 저장하는 방식의 자료구조입니다.
- 각 노드는 데이터와 다음 노드의 주소를 가리키는 포인터로 구성되며, 이전 노드의 주소를 가리키는 포인터도 가질 수 있습니다.
- 인덱스를 통해 접근이 어렵기 때문에 처음부터 순서대로 찾아가야 함.
- Linked List는 데이터의 추가, 삭제가 빠르며, 크기를 동적으로 조절할 수 있습니다.
- 하지만 인덱스를 사용하여 데이터에 접근하는 것이 불가능하므로, 검색이나 정렬에는 적합하지 않습니다.
-arraylist와 linkedList의 차이?
-스택, 큐가 사용되는 곳? 사용법?(디큐같은...)
'스파르타 기술면접' 카테고리의 다른 글
절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? (0) | 2023.04.29 |
---|---|
프로세스와 스레드 (0) | 2023.04.17 |
List / Set / MAp, HashMap (0) | 2023.04.16 |
Filter / Interceptor / AOP (0) | 2023.04.11 |
DI의 방식 중 필드 vs 생성자 주입 방식 (0) | 2023.04.11 |