자료구조
자료구조는 여러 종류의 데이터들의 묶음을 저장하고 그 데이터에 대해 사용했던 방법을 정의해둔것이다.
데이터를 체계적으로 저장하고 또한 효율적으로 활용하기 위해 자료구조를 사용하고 있고 대부분의 만들어진 자료 구조는
특정 상황에서 높인 문제를 해결하는데 특화되어 있다고 할 수 있다.
Stack
쌓다 또는 쌓이다 같은 뜻을 가지고 있는 이 자료구조형은 FILO/LIFO 즉 후입선출 방식으로 마지막에 들어온 데이터가 먼저나오는
방식의 로직으로 이루어져있다
특징으로는 다음과 같다
- 먼저 들어간 데이터가 나중에 나와야 한다. (선입후출)
- Stack은 하나의 입출력 방향을 가지고 있고 한쪽에서만 삽입과 삭제 연산을 수행한다.
자바에서는 Stack을 사용하기 위한 패키지를 제공하고 있다.
import java.util.Stack; // 스택 패키지 호출
Stack<Integer> stack = new Stack<>(); // int형 스택 선언
// 데이터 추가
stack.push("new"); // stack에 값 "new" 추가
// 데이터 삭제
stack.pop(); // stack에 값 제거
stack.clear(); // stack의 전체 값 제거 (초기화)
// 데이터 출력
stack.peek(); // stack의 가장 상단의 값 출력
// 기타 메서드
stack.size(); // stack의 크기 출력
stack.empty(); // stack이 비어있는제 check (비어있다면 true)
stack.contains("new") // stack에 "new"가 있는지 check (있다면 true)
스택을 사용하기 위해 자바에서 제공하는 스택 패키지를 호출해서 객체를 통해 사용한다.
사용의 경우 Stack<엘리먼트> 객체명 = new Stack<>(); 방식으로 사용한다.
기본으로 제공하는 메서드들을 위의 코드를 통해 예제로 설명하고 있다 그밖에도 컬렉션 메서드들도 활용할 수 있다.
Queue
줄을 서서 기다리다 또는 대기행렬이라는 뜻을 가진 이 자료구조형은 FIFO/LILO 즉 선입선출 방식으로
빠져나갈때도 들어온 순서대로 나가는 방식의 로직으로 이루어져있다.
특징으로는 다음과 같다
- 먼저 들어간 데이터가 제일 먼저 나와야 한다. (선입선출)
- 데이터는 무조건 하나씩 추가와 삭제할 수 있다.
- Queue는 두개의 입출력 방향을 가지고 있는데 한쪽 끝은 프론트로 삭제 연산만 수행하고 한쪽 끝은 리어로 정해서 삽입 연산만 수행한다.
- 그래프의 넓이 우선 탐색(BFS)이나 컴퓨터 버퍼등에 주료 사용이 된다(많은 입력이 있을때 순차처리를 위해 사용함)
자바에서 Queue를 활용하기 위해 여러가지 자료를 찾아본 결과 이미 기본적으로 Queue에 대한 메서드를 제공하고 있었다.
import java.util.LinkedList; // Queue를 사용하기 위해 LinkedList 불러오기
import java.util.Queue; // Queue 라이브러리 불러오기
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용
// 데이터 추가 메서드
queue.add(new); // queue에 값 new 추가
queue.offer(world); // queue에 값 world 추가
// 데이터 삭제 메서드
queue.poll(); // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove(); // queue에 첫번째 값 제거
queue.clear(); // queue 초기화
// 데이터 출력 메서드
queue.peek(); // queue의 첫번째 값 불러오기
자바에서 큐는 기본적으로 LinkedList를 활용해서 생성해야 한다 그래서 Queue와 LinkedList의 패키지를 호출해야 한다.
기본적인 사용 선언의 경우는 " Queue<엘리먼트> 객체명 = new LinkedList<>() " 방식으로 사용한다.
기본으로 제공하는 메서드들을 위의 코드를 통해 예제로 설명하고 있다 그밖에도 컬렉션 메서드들도 활용할 수 있다.