mim
mim 코딩 기록
mim
  • 분류 전체보기 (131)
    • 백엔드 과정 (108)
      • Java (50)
      • Oracle(SQL) (19)
      • jdbc (6)
      • html css (4)
      • JavaScript (5)
      • Servlet (12)
      • Spring (3)
      • 자바 예습 (8)
    • 개발지식 (12)
      • CS공부 (9)
      • 세미나및교육 (2)
    • 자격증 (6)
      • 네트워크관리사 (5)
    • Project (3)
    • Error Note (1)

블로그 메뉴

  • 깃허브

태그

  • 배열
  • oracle
  • 문제풀이
  • 데이터베이스
  • 국비교육
  • java
  • 국비
  • 국비학원
  • JDBC
  • 반복문
  • 자바
  • SQL
  • Servlet
  • 서블릿
  • 오라클

인기 글

최근 글

전체 방문자
오늘
어제

티스토리

반응형
hELLO · Designed By 정상우.
mim

mim 코딩 기록

백엔드 과정/Java

[Java] day19. 컬렉션 자료구조 Stack/ Queue

2022. 1. 11. 22:53
반응형

 

Stack 

Stack은 제한적으로 접근할 수 있는 나열 구조로 데이터를 저장하는 자료구조로

후입선출( LIFO - Last Input First Out ) 방식이다.

 

Stack은 리스트 계열 클래스의 Vector 클래스를 상속 받아 구현하였다.
스택 메모리 구조는 선형 메모리 공간에 데이터를 저장한다.

데이터를 넣는 Push 동작과 데이터를 빼는 Pop 동작을 수행한다.

 

 

Stack 인스턴스 생성

Stack<Integer> integerStack = new Stack<>();

 

Stack에 값을 넣을 때는 push() 메소드를 이용한다.
add()도 이용 가능하지만 Vector의 메소드이므로 push()를 사용하는 것이 좋다.

	integerStack.push(1);
	integerStack.push(2);
	integerStack.push(3);
	integerStack.push(4);
	integerStack.push(5);

 

스택에서 요소를 찾을 때 search()를 이용할 수 있다.
인덱스가 아닌 위에서부터의 순번을 의미한다.
또한 가장 상단의 위치가 0이 아닌 1부터 시작한다.

	System.out.println(integerStack.search(5));

 

stack에서 값을 꺼내는 메소드는 크게 2가지로 볼 수 있다.


peek() : 해당 스택의 가장 마지막에(상단에 있는) 요소 반환

	System.out.println("peek() : " + integerStack.peek());
	System.out.println(integerStack);

peek() : 5
[1, 2, 3, 4, 5]


pop() : 해당 스택의 가장 마지막에 있는(상단에 있는) 요소 반환 후 제거

	System.out.println("pop() : " + integerStack.pop());
	System.out.println(integerStack);

pop() : 5
[1, 2, 3, 4]   //5가 제거되었다.

 

 

pop은 꺼내면서 요소를 제거하기 때문에 스택이 비어있는 경우 에러가 발생할 수 있다.

	System.out.println("pop() : " + integerStack.pop());
	System.out.println("pop() : " + integerStack.pop());
	System.out.println("pop() : " + integerStack.pop());
	System.out.println("pop() : " + integerStack.pop());
//	System.out.println("pop() : " + integerStack.pop());	//EmptyStackException 발생

pop() : 4
pop() : 3
pop() : 2
pop() : 1

 

 


Queue

Queue는 선형 메모리 공간에 데이터를 저장하는
선입선출(FIFO - First Input First Out) 방식의 자료구조이다.

 

Queue 인터페이스를 상속 받는 하위 인터페이스들은

Deque, BlockingQueue, TransferQueue 등 다양하지만
대부분의 큐는 LinkedList를 이용한다.

 

Queue 자체로는 인터페이스이기 때문에 인스턴스 생성이 불가능하다.

//Queue<String> que = new Queue<>();


LinkedList로 인스턴스 생성 

Queue<String> que = new LinkedList<>();

 

큐에 데이터를 넣을 때에는 offer()를 이용한다. 

	que.offer("first");
	que.offer("second");
	que.offer("third");
	que.offer("fourth");
	que.offer("fifth");

 

큐에서 데이터를 꺼낼 때는 2가지 메소드가 있다.
peek() : 해당 큐의 가장 앞에 있는 요소(먼저 들어온 요소)를 반환한다.

	System.out.println("peek() : " + que.peek());
	System.out.println(que);

peek() : first
[first, second, third, fourth, fifth]


poll() : 해당 큐의 가장 앞에 있는 요소(먼저 들어온 요소)를 반환하고 제거한다.

	System.out.println("poll() : " + que.poll());
	System.out.println(que);

poll() : first
[second, third, fourth, fifth] // first가 제거되었다.

 

 


스택과 큐 .. 정처산기 시험으로 자료구조로 배웠는데, 이렇게 사용되는구나..

사실 아직 어느 상황에 이러한 자료구조를 사용하게 되는지는 모르겠다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'백엔드 과정 > Java' 카테고리의 다른 글

[Java] 국비교육 day21. 예외처리 Exception  (0) 2022.01.12
[Java] day20. 컬렉션 프레임워크 Set / Map  (0) 2022.01.12
[Java] day19. 컬렉션 프레임워크 LinkedList  (0) 2022.01.11
[Java] day19. 컬렉션 프레임워크 ArrayList  (0) 2022.01.11
[Java] day18 제네릭(Generic) ~ 토끼농장 ~  (0) 2022.01.07
    mim
    mim
    개발자 취준생

    티스토리툴바