Queue 구현
public class Queue {
public static void main(String[] args) {
//구현할것
//1. void add(String value)
//2. int size()
//3. String poll()
//4. String peek()
//5. clear()
//6. 배열의 길이를 가변으로 구현(큐객체 생성 직후는 배열이 없음-> 첫add()호출 시 4칸 짜리 생성->데이터가 꽉차면 2배로 방생성)
//7. void trimTosize()
//배열 생성
MyQueue queue = new MyQueue();
//추가
queue.add("빨강");
queue.add("노랑");
queue.add("파랑");
queue.add("주황");
queue.add("검정");
//읽기
System.out.println();
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
//개수
System.out.println(queue.size());
//확인
System.out.println(queue.peek());
System.out.println(queue.peek());
System.out.println(queue.size());
//크기 조절
queue.trimToSize();
//초기화
queue.clear();
System.out.println(queue.size());
}
}
class MyQueue{
private int index; //삽입할떄
private int front; //
private String[] list;
public MyQueue() {
this.index = -1; //rear
this.front = 0; // front
this.list = new String[4];
}
public void add(String value) {
this.index ++;
if(this.index == list.length) {
String[] temp = new String[list.length*2];
for(int i=0;i<list.length;i++) {
temp[i] = list[i];
}
this.list = new String[temp.length];
for(int i=0;i<list.length;i++) {
list[i] = temp[i];
}
}
list[this.index] = value;
}
public String poll() {
String result = list[this.front];
this.front++;
this.index--;
return result;
}
public int size() {
return this.index+1;
}
public String peek() {
return list[this.front];
}
public void clear() {
for(int i=list.length-1;i>=0;i--) {
list[i]=null;
}
this.index=-1;
}
public void trimToSize() {
String[] temp = new String[this.index+1];
for(int i=0;i<temp.length;i++) {
temp[i] = this.list[i];
}
this.list = temp;
}
}
/////////////결과값////////////
빨강 //System.out.println(queue.poll());
노랑 //System.out.println(queue.poll());
파랑 //System.out.println(queue.poll());
2 //System.out.println(queue.size());
//확인
주황 //System.out.println(queue.peek());
주황 //System.out.println(queue.peek());
2 //System.out.println(queue.size());
0 //초기화