๐ŸŒป 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
iseunghan

๊ณต์ง€์‚ฌํ•ญ

  • ์–ด์ œ๋ณด๋‹ค ๋‚˜์€ ์˜ค๋Š˜์ด ๋˜๊ธฐ ์œ„ํ•ด ๐Ÿ”ฅ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (261)
    • ๐Ÿ’ 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 (2)
    • ๐Ÿ“š 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 + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.