🌻 JAVA/정리정리정리

[Java] 스택(Stack) / 큐(Queue) 정리

2020. 6. 15. 17:42
목차
  1. Queue
  2. Stack
반응형

Queue

Queue<V> queue = new ArrayDeque<>(); Queue<V> queue = new LinkedList<>();

Queue는 Interface이기 때문에, 위와같이 해당 인터페이스를 구현하는 두 가지 클래스로 생성하여, 저장할 수 있다.

이론적으로는 연결리스트의 특성을 갖는 LinekdList가 효율이 좋아야 하지만, 실제로는 여러 이유때문에 ArrayDeque이 속도가 조금 더 빠르다고 한다.

어차피 알고리즘 문제 내에서 큰 차이는 없을 것 같으니 아무거나 쓰자. 

LinkedList<String> qu = new LinkedList<String>();//큐의 생성
//DeQue<String> qu = new ArrayDeque<String>();

//add()메소드를 이용한 저장
qu.add("넷");
qu.add("둘");
qu.add("셋");
qu.add("하나");

//peek() 반환 (=참조만 하는것뿐, 뽑는게 아니다.)
System.out.println(qu.peek());

//poll() 뽑기 (=뽑는것 큐에서 빼낸다.)
System.out.println(qu.poll());

//remove() 요소 제거
qu.remove("하나");

 

 

메소드 설명
boolean add(E e) 해당 큐의 맨 뒤에 전달된 요소를 삽입.
삽입에 성공하면 true를 반환하고, 큐에 여유 공간이 없어 실패하면 IllegalStateException을 발생.
E element() 해당 큐의 맨 앞에 있는 (제일 먼저 저장된) 요소를 반환함.
boolean offer(E e) 해당 큐의 맨 뒤에 전달된 요소를 삽입함.
E peek() 해당 큐의 맨 앞에 있는 요소를 반환함.
만약 큐가 비어있으면 null을 반환.
E poll() 해당 큐의 맨 앞에 있는 요소를 반환하고 큐에서 제거한다.
E remove() 해당 큐의 맨 앞에 있는 요소를 제거함.

 

 

 


 

 

Stack

Stack<V> stack = new Stack<>();

Stack은 위의 Queue와는 달리 인터페이스가 아니라 클래스다. 그렇기 때문에 귀찮은 고민할 필요 없이 Stack 클래스로 생성한 인스턴스를 저장해주고 사용하면 된다.

 

스택 생성

Stack<Element> stack = new Stack<>();

 

스택이 지원하는 메소드

public Element push(Element item); // 데이터 추가
public Element pop(); // 최근에 추가된(Top) 데이터 삭제
public Element peek(); // 최근에 추가된(Top) 데이터 조회
public boolean empty(); // stack의 값이 비었는지 확인, 비었으면 true, 아니면 false
public int seach(Object o); // 인자값으로 받은 데이터의 위치 반환

 

<예시>

Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < 5; i++) {
            stack.push(i + 1);
            System.out.println(stack.peek());
        } // 1, 2, 3, 4, 5 가 현재 들어가 있음
        stack.pop(); // 1, 2, 3, 4
        System.out.println(stack.peek()); // 4
        System.out.println(stack.search(1)); // 4
        System.out.println(stack.empty()); // false

 

 

 

 

출처:

https://velog.io/@lshjh4848/Java-%EC%8A%A4%ED%83%9DStack-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A0%95%EB%A6%AC

https://velog.io/@wan088/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EA%B3%A0%EB%93%9D%EC%A0%90Kit-2-%EC%8A%A4%ED%83%9D%ED%81%90

반응형
저작자표시 (새창열림)
  1. Queue
  2. Stack
'🌻 JAVA/정리정리정리' 카테고리의 다른 글
  • [Java] ArrayList 사용법
  • [Java] 실행 시간 구하기
  • [Java] 10진수 -> 2진수
  • [Java] 비트연산자 ( & , | ,..)
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
[Java] 스택(Stack) / 큐(Queue) 정리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.