๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java-๊ธฐ์ดˆ] ArrayList๋กœ ์Šคํƒ๊ณผ ํ ๊ตฌํ˜„ํ•˜๊ธฐ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 21.
๋ฐ˜์‘ํ˜•

โ–ถ ArrayList๋กœ ์Šคํƒ๊ณผ ํ ๊ตฌํ˜„ํ•˜๊ธฐ

์Šคํƒ์€ ์ƒ์ž๋ฅผ ์Œ“๋“ฏ์ด ์ž๋ฃŒ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹.

์ด์ฒ˜๋Ÿผ ์Šคํƒ์€ ๋งจ ๋‚˜์ค‘์— ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๊บผ๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

ํ๋Š” ์ผ์ƒ ์ƒํ™œ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์˜ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ '์„ ์ฐฉ์ˆœ'์„ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

โ€‹

โ€‹

โ€‹

*ArrayList๋กœ ์Šคํƒ ๊ตฌํ˜„ํ•˜๊ธฐ

์Šคํƒ์€ ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ž๋ฃŒ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค. ์Šคํƒ์— ์ž๋ฃŒ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ push( )๋ผ๊ณ  ํ•˜๊ณ , ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ด๋Š” ๊ฒƒ์„ pop( )์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์Šคํƒ์— ๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์ž๋ฃŒ์˜ ์œ„์น˜๋ฅผ top์ด๋ผ๊ณ  ํ•œ๋‹ค.

โ€‹

StackTest.java

package collection.arraylist;

import java.util.ArrayList;

class MyStack {
	private ArrayList<String> arrayStack = new ArrayList<String>();

	public void push(String data) {  // ์Šคํƒ์˜ ๋งจ ๋’ค์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
		arrayStack.add(data);
	}

	public String pop() {  // ์Šคํƒ์˜ ๋งจ ๋’ค์—์„œ ์š”์†Œ ๊บผ๋ƒ„
		int len = arrayStack.size();  // ArrayList์— ์ €์žฅ๋œ ์œ ํšจํ•œ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜ 
		if (len == 0) {
			System.out.println("์Šคํƒ์ด ๋น„์—ˆ์Šต๋‹ˆ๋‹ค.");
			return null;
		}
		return (arrayStack.remove(len - 1));  // ๋งจ ๋’ค์— ์žˆ๋Š” ์ž๋ฃŒ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐ
	}
}

public class StackTest {
	public static void main(String[] args) {
		MyStack stack = new MyStack();
		stack.push("A");
		stack.push("B");
		stack.push("C");

		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
		System.out.println(stack.pop());
	}
}

โ€‹

<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

โ€‹

โ€‹

*ArrayList๋กœ ํ ๊ตฌํ˜„ํ•˜๊ธฐ

ํ๋ž€? ์ž๋ฃŒ ๊ตฌ์กฐ์˜ ํ•œ ํ˜•ํƒœ๋กœ ์ž๋ฃŒ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๋Š” ์„ ํ˜• ์ž๋ฃŒํ˜•.

์ž๋ฃŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋Š” enqueue, ์ž๋ฃŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ(์ถ”์ถœ)ํ•˜๋Š” dequeue

ํ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์—๋‹ค ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ์ด ๋˜๋Š”๋ฐ, ์ด๋ฅผ FIFO(First In First Out)๋ผ ํ•œ๋‹ค.

๋ง›์ง‘ ๋Œ€๊ธฐ์ค„์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์›€. (์†๋‹˜1์˜ ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ์†๋‹˜2์˜ ์ฃผ๋ฌธ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•จ)

โ€‹

QueueTest.java

package collection.arraylist;

import java.util.ArrayList;

class MyQueue {
	private ArrayList<String> arrayQueue = new ArrayList<String>();

	public void enQueue(String data) {  // ํ์˜ ๋งจ ๋’ค์— ์ถ”๊ฐ€
		arrayQueue.add(data);
	}

	public String deQueue() {  // ํ์˜ ๋งจ ์•ž์—์„œ ๊บผ๋ƒ„
		int len = arrayQueue.size();
		if (len == 0) {
			System.out.println("ํ๊ฐ€ ๋น„์—ˆ์Šต๋‹ˆ๋‹ค.");
			return null;
		}

		return (arrayQueue.remove(0));  // ๋งจ ์•ž์˜ ์ž๋ฃŒ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฐฐ์—ด์—์„œ ์ œ๊ฑฐ
	}
}

public class QueueTest {
	public static void main(String[] args) {

		MyQueue queue = new MyQueue();
		queue.enQueue("A");
		queue.enQueue("B");
		queue.enQueue("C");

		System.out.println(queue.deQueue());
		System.out.println(queue.deQueue());
		System.out.println(queue.deQueue());
	}
}

โ€‹

<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€