๐ ์๋ฐ์์ ์ 2๊ถ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ ํํธ์ Queue์ ๊ฐ๋ ์ ์ดํดํ๊ณ ์์ ๋ฅผ ํตํด ๋ค๋ค๋ณด์.
Queue : ์ ํ ๊ตฌ์กฐ
First In First Out
๋จผ์ ๋ค์ด์จ ๊ฐ์ด ๋จผ์ ๋๊ฐ๋ค.
static Queue q = new LinkedList();
static final int MAX_SIZE = 5;
ํ ๊ฐ์ฒด๋ฅผ ๋งํฌ๋๋ฆฌ์คํธ๋ก ์ ์ธํ๋ค.
ํ์ ๊ธธ์ด๋ 5
๐ ์์ ์ ์ฒด์ฝ๋
package queue;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Queue;
import java.util.Scanner;
public class Ex01 {
static Queue q = new LinkedList();
static final int MAX_SIZE = 5;
public static void main(String[] args) {
System.out.println("help๋ฅผ ์
๋ ฅํ๋ฉด ๋์๋ง์ ๋ณผ ์ ์์ต๋๋ค .");
while (true) {
System.out.print(">>");
try {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine().trim();
if ("".equals(input))
continue;
if (input.equalsIgnoreCase("q")) {
System.exit(0);
} else if (input.equalsIgnoreCase("help")) {
System.out.println(" help - ๋์๋ง์ ๋ณด์ฌ์ค๋๋ค.");
System.out.println(" q๋๋ Q - ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.");
System.out.println("history - ์ต๊ทผ์ ์
๋ ฅํ๋ ๋ช
๋ น์ด๋ฅผ " + MAX_SIZE + "๊ฐ ๋ณด์ฌ์ค๋๋ค.");
} else if (input.equalsIgnoreCase("history")) {
int i = 0;
// ์
๋ ฅ๋ฐ์ ๋ช
๋ น์ด๋ฅผ ์ ์ฅํ๊ณ ,
save(input);
// linkedList์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค.
LinkedList tmp = (LinkedList) q;
ListIterator it = tmp.listIterator();
while (it.hasNext())
System.out.println(++i + "." + it.next());
} else {
save(input);
System.out.println(input);
} // if(input.equalsIgnoreCase("q")) {
} catch (Exception e) {
System.out.println("์
๋ ฅ์ค๋ฅ์
๋๋ค.");
}
} // end of while
}
public static void save(String input) {
// queue์ ์ ์ฅํ๋ค.
if (!"".equals(input))
q.offer(input);
// queue์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋์ผ๋ฉด ์ ์ผ ์ฒ์์ ์
๋ ฅ๋ ๊ฒ์ ์ญ์ ํ๋ค.
if (q.size() > MAX_SIZE)
q.remove();
}
} // end of class
โญ ์ฝ๋ํด์
while (true) {
System.out.print(">>");
try {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine().trim();
if ("".equals(input))
continue;
1๏ธโฃ ์ฐ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ด์์ค๋ค.
2๏ธโฃ ๋ง์ฝ ์ ๋ ฅ ๋ณ์ input์ด ๊ณต๋ฐฑ์ด๋ฉด ์ฒ์์ผ๋ก๋๋์๊ฐ๋ค.
if (input.equalsIgnoreCase("q")) {
System.exit(0);
} else if (input.equalsIgnoreCase("help")) {
System.out.println(" help - ๋์๋ง์ ๋ณด์ฌ์ค๋๋ค.");
System.out.println(" q๋๋ Q - ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.");
System.out.println("history - ์ต๊ทผ์ ์
๋ ฅํ๋ ๋ช
๋ น์ด๋ฅผ " + MAX_SIZE + "๊ฐ ๋ณด์ฌ์ค๋๋ค.");
} else if (input.equalsIgnoreCase("history")) {
int i = 0;
// ์
๋ ฅ๋ฐ์ ๋ช
๋ น์ด๋ฅผ ์ ์ฅํ๊ณ ,
save(input);
1๏ธโฃ ๋ง์ฝ input์ด q์ ์ผ์นํ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๊ณ
2๏ธโฃ help์ ์ผ์นํ๋ฉด ๋์๋ง(๋ฉ๋ด) / history์ ์ผ์นํ๋ฉด ์ต๊ทผ์ ๋ ฅ๊น์ง ์ ์ฅํ๊ณ 5๊ฐ ๊น์ง ๋ณด์ฌ์ค๋ค.
LinkedList tmp = (LinkedList) q;
ListIterator it = tmp.listIterator();
while (it.hasNext())
System.out.println(++i + "." + it.next());
1๏ธโฃ ๋งํฌ๋ ๋ฆฌ์คํธ ๊ฐ์ฒด์ธ ๋ณ์ tmp์ q๋ฅผ ์ ์ฅํ๊ณ ์๋ฃํ์ ๋ง์ถฐ์ค๋ค.
2๏ธโฃ ๋ฆฌ์คํธ์ํ์์ ๋ณ์ tmp๋ฅผ ์ง์ ํด์ ์ํํจ์๋ฅผ ์ง์ ํด์ค๋ค.
3๏ธโฃ ๋ฐ๋ณต๋ฌธ์ผ๋ก 1๋ฒ๋ถํฐ 5๋ฒ๊น์ง ๋ฆฌ์คํธ์ ๋ค์๊ฐ์ด ์๋์ง ํ๋ณํ๋ฉด์ ๋งํฌ๋๋ฆฌ์คํธ์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค.
*๏ธโฃsaveํจ์
1๏ธโฃ ๊ณต๋ฐฑ์ด ์๋๊ฒฝ์ฐ์๋ง input์ ์
๋ ฅ๊ฐ์ ์ ์ฅํ๊ณ
2๏ธโฃ ๋ฆฌ์คํธ q์ ์ฌ์ด์ฆ๊ฐ MAX_SIZE์ ํฌ๊ธฐ์ธ 5๋ณด๋ค ํฌ๋ฉด ์ ์ผ ์ต๊ทผ ์ ๋ ฅ์ ์ญ์ ํ๋ค.
public static void save(String input) {
// queue์ ์ ์ฅํ๋ค.
if (!"".equals(input))
q.offer(input);
// queue์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋์ผ๋ฉด ์ ์ผ ์ฒ์์ ์
๋ ฅ๋ ๊ฒ์ ์ญ์ ํ๋ค.
if (q.size() > MAX_SIZE)
q.remove();
}
โญ ์ปดํ์ผ ํ ์คํ๊ฒฐ๊ณผ
๐ ์ด ์์ ์์ ์ฃผ์๊น๊ฒ ์ดํด๋ณด์์ผ ํ ๊ฒ์
์ฌ์ฉ์๊ฐ 5๋ฒ์ ์ ๋ ฅ์ ํ๋ค๋ฉด FIFO ๊ตฌ์กฐ์ธ Queue๋ LIFO ์ ํ์๋ฃ๊ตฌ์กฐ์ธ Stack๊ณผ๋ ๋ค๋ฅด๊ฒ
๋งจ ์ฒ์ ์ ๋ ฅํ๋ ๊ฐ๋ถํฐ ์์ฐจ์ ์ผ๋ก ๋ณด์ฌ์ค๋ค๋ ๊ฒ์ด๋ค.
#๏ธโฃ stack์ด์๋ค๋ฉด
history๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฃ์์๋ ์ ๋ ฅ๊ฐ history๊ฐ ๋จผ์ ์ถ๋ ฅ๋ ๊ฒ์ด๋ค.
๋งจ ๋ง์ง๋ง์๋ค์ด๊ฐ ์์๋ถํฐ ๋นผ์ ์์ฐจ์ ์ผ๋ก ๋ณด์ฌ์คํ ๋๊น.
history
e
d
c
b ๊ฐ ๋์๊ฒ์ด๋ค. .