JAVA

Queue 구현

웹개발자준비 2018. 7. 31. 17:27

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());

//System.out.println(queue.size());

//확인
주황 //System.out.println(queue.peek());
주황 //System.out.println(queue.peek());
//System.out.println(queue.size());

//초기화