나의 IT일지
Queue, Stack 본문
데이터는 자료구조를 통해 의미와 목적을 바탕으로 구분해서 저장한다. 이때, 자료구조란 데이터를 구분해서 저장하는 구조로, 데이터를 효율적으로 사용하기 위해서 사용한다. 그리고 자바에서는 자료구조를 사용해서 데이터를 효율적으로 추가, 삭제, 검색 할 수 있도록 컬렉션 인터페이스를 사용방법을 정의했으며, 데이터(요소)를 가지는 객체의 주소를 저장하는 컬렉션 클래스로 java.util 패키지에 구현했다.
Queue
Queue은 컬렉션 프레임워크에 있는 Queue 인터페이스를 통해 구현한 자료구조로, 데이터를 일렬로 늘어놓은 배열에서 한 쪽 끝에서는 삽입이 일어나고, 반대 쪽에서는 삭제가 일어난다.
Queue의 특징으로는 해당 자료구조에 저장된 원소순으로 삭제되는 선입선출이다. 그리고 Queue은 배열을 사용하지만 배열과 달리 front와 rear가 존재한다. front는 저장된 원소 중에서 첫번째 원소를 지정하고, rear는 저장된 원소중에서 마지막 원소를 지정해서 front에 있는 데이터를 삭제하며, rear에 있는 원소 뒤로 데이터를 저장한다.
Queue <E> 변수 = new LinkedList<E>() ;
Queue 인터페이스는 주로 List클래스를 통해 구현되어 있다. 이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 추가되는 객체의 타입에 맞춰서 해당 List에 저장할 수 있는 타입이 변경된다.
Queue는 List 컬렉션이기도 하기에, LinkedList클래스를 통해 객체를 생성하고 다음과 같은 메서드를 사용할 수 있다.
- add (요소} : 해당 List에 rear위치로 새로운 요소 추가
- element : front위치에 있는 요소 반환
- remove : front위치에 있는 요소 반환후 제거
- offer (요소} : 해당 List에 rear위치로 새로운 요소 추가
- peek : front위치에 있는 요소 반환
- poll : front위치에 있는 요소 반환후 제거
package pack0617;
import java.util.LinkedList;
import java.util.Queue;
public class Code1 {
public static void main(String[] args) {
Queue<String> q = new LinkedList<>();
q.add("apple");
q.add("banna");
q.add("cherry");
q.add("kiwi");
System.out.println(q);
System.out.println("element : "+q.element());
System.out.println("remove : "+q.remove());
System.out.println(q);
q.offer("peach");
System.out.println(q);
System.out.println("peek : "+q.peek());
System.out.println("poll : "+q.poll());
System.out.println(q);
System.out.println();
}
}
Stack
Stack은 컬렉션 프레임워크에 있는 List 인터페이스를 통해 구현한 클래스 중 하나로, 데이터를 일렬로 늘어놓은 배열에서 한 쪽 끝에서만 삽입과 삭제가 일어나는 자료구조이다.
Stack의 특징으로는 해당 자료구조에 가장 최근에 저장한 원소부터 삭제되는 후입선출이다. 그래서 Stack은 배열을 사용하지만 배열과 달리 top을 통해 가장 최근에 저장된 원소를 지정하고, top위치에 있는 데이터가 삭제, 데이터가 삽입되면 top위치가 최근에 저장된 원소로 변경된다.
Stack <E> 변수 = new Stack<E>() ;
이때, 제너릭 기법인 <E>는 생략이 가능하며, <E>를 생략할 경우에는 추가되는 객체의 타입에 맞춰서 해당 Stack에 저장할 수 있는 타입이 변경된다.
- push : top위치에 요소 추가
- peek : top위치에 요소 반환
- pop : top위치의 요소 제거후 반환
- search (요소) : 해당 내용의 위치를 출력
package pack0617;
import java.util.Stack;
public class Code2 {
public static void main(String[] args) {
Stack s =new Stack();
s.push("apple");
s.push("banna");
s.push("cherry");
System.out.println(s);
System.out.println("pop : "+s.pop());
System.out.println("peek : "+s.peek());
System.out.println(s);
System.out.println(s.search("apple"));
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
Map 컬렉션 (0) | 2023.06.18 |
---|---|
List 컬렉션 (0) | 2023.05.27 |
Set 컬렉션 (0) | 2023.05.26 |
컬렉션 프레임 워크 (0) | 2023.05.25 |
Format 클래스 (0) | 2023.05.24 |