Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

Queue, Stack 본문

프로그래밍 언어/Java

Queue, Stack

세레프 2023. 6. 17. 22:41

 데이터는 자료구조를 통해 의미와 목적을 바탕으로 구분해서 저장한다. 이때, 자료구조 데이터를 구분해서 저장하는 구조로, 데이터를 효율적으로 사용하기 위해서 사용한다. 그리고 자바에서는 자료구조를 사용해서 데이터를 효율적으로 추가, 삭제, 검색 할 수 있도록 컬렉션 인터페이스를 사용방법을 정의했으며, 데이터(요소)를 가지는 객체의 주소를 저장하는 컬렉션 클래스로 java.util 패키지에 구현했다.

 

컬렉션 프레임 워크

상황에 따라서 자료가 어떻게 저장되어야 효율적으로 데이터를 사용할 수 있는지 달라진다. 그래서 상황에 따라 자료를 어떻게 저장하는지 정의할 필요가 있다. 이때, 자료들을 저장할 때, 효율

my-it-diary.tistory.com

 

Queue

 Queue 컬렉션 프레임워크에 있는 Queue 인터페이스를 통해 구현한 자료구조로, 데이터를 일렬로 늘어놓은 배열에서 한 쪽 끝에서는 삽입이 일어나고, 반대 쪽에서는 삭제가 일어난다. 

 

Queue (Java Platform SE 8 )

A collection designed for holding elements prior to processing. Besides basic Collection operations, queues provide additional insertion, extraction, and inspection operations. Each of these methods exists in two forms: one throws an exception if the opera

docs.oracle.com

 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 (Java Platform SE 8 )

The Stack class represents a last-in-first-out (LIFO) stack of objects. It extends class Vector with five operations that allow a vector to be treated as a stack. The usual push and pop operations are provided, as well as a method to peek at the top item o

docs.oracle.com

 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
Comments