JAVA/컬렉션 프레임워크
Test161 ~ 162 컬렉션 프레임워크 - (2) 큐(Queue)
ready J
2020. 9. 22. 03:52
○ 큐(Queue)
큐(Queue)는 FIFO(Firsr Input First Output) 구조로 먼저 입력된 자료를 먼저 출력하며
Queue 인터페이스를 구현한 클래스는 큐와 관련된 다양한 기능을 제공한다.
※ queue 인터페이스 인스턴스를 생성하기 위해서는 new 연산자를 이요하여 Queue 인터페이스를 구현한(implements) 클래스의 생성자를 호출한다.
ex) Queue ob = new LinkedList();
○ 주요 메소드
- E element()
큐의 head 요소를 반환하며 삭제하지 않는다.
- boolean offer(E o)
지정된 요소를 큐에 삽입한다.
- E peek()
큐의 head 요소를 반환하고 삭제하지 않으며 큐 자료구조가 empty 인 경우 null 을 반환한다
- E poll()
큐의 head 요소를 반환하고 삭제하며 큐 자료구조가 empty인 경우 null 을 반환한다.
- E remove()
큐의 head 요소를 반환하고 삭제한다.
import java.util.Queue;
import java.util.LinkedList;
public class Test161
{
public static void main(String[] args)
{
// Queue 자료구조 생성
//Queue myQueue = new Queue();
Queue<Object> myQueue = new LinkedList<Object>();
// 데이터 준비
String str1 = "이준구";
String str2 = "한은영";
String str3 = "정의진";
String str4 = "조영욱";
// myQueue 라는 Queue 자료구조에 데이터 추가
myQueue.offer(str1);
myQueue.offer(str2);
myQueue.offer(str3);
myQueue.offer(str4);
// Queue 자료구조에서 요소를 제거하지 않고 head 요소 반환
System.out.println("값1 : " + (String)myQueue.element());
System.out.println("값1 : " + (String)myQueue.element());
//--==>> 값1 : 이준구
// 값2 : 이준구
System.out.println();
String val;
// ①
// peek()
//-- 큐의 head 요소 반환. 제거 안함.
// 큐가 empty 일 경우. null 반환.
while (myQueue.peek() != null)
{
// poll()
//-- 큐의 head 요소 반환. 제거 함/
// 큐가 empty 일 경우. null 반환.
val = (String)myQueue.poll();
System.out.println("요소 : " + val);
}
//--==>> 요소 : 이준구
// 요소 : 이진주
// 요소 : 정의진
// 요소 : 조영욱
// (X)
//while (myQueue.poll() != null)
//{
// // poll()
// //-- 큐의 head 요소 반환. 제거 함/
// // 큐가 empty 일 경우. null 반환.
// val = (String)myQueue.poll();
// System.out.println("요소 : " + val);
//}
//--==>> 요소 : 이진주
// 요소 : 조영욱
// ②
while (true)
{
val = (String)myQueue.poll();
if (val == null)
break;
else
System.out.println("요소 : " + val);
}
System.out.println();
//--==>> 요소 : 이준구
// 요소 : 이진주
// 요소 : 정의진
// 요소 : 조영욱
// ③
while (!myQueue.isEmpty())
{
val = (String)myQueue.poll();
System.out.println("요소 : " + val);
}
System.out.println();
//--==>> 요소 : 이준구
// 요소 : 이진주
// 요소 : 정의진
// 요소 : 조영욱
}
}
import java.util.Queue;
import java.util.LinkedList;
public class Test162
{
// 정적 문자열 배열 선언 및 초기화
private static final String[] colors
= {"검정", "노랑", "초록", "파랑", "빨강", "연두"};
public static void main(String[] args)
{
// Queue 자료구조 생성
Queue<String> qu = new LinkedList<String>();
//-- Queue 인터페이스 기반의 인스턴스를 생성하기 위해서는
// new 연산자를 이용하여 Queue 인터페이스를 implements 한
// 하위 클래스의 생성자를 호출해야 한다.
// qu 라는 Queue 자료구조에
// colors 배열의 데이터 입력
for (String color : colors)
qu.offer(color);
// qu 라는 Queue 자료구조의 모든 데이터 전체 출력
while (qu.peek() != null)
System.out.print(qu.poll() + " ");
System.out.println();
//--==>> 검정 노랑 초록 파랑 빨강 연두
}
}