[AVA]21日目(収集フレーム/キュー)
8月12日(木)
Test152~Test159
キュー
適用例)
Eメール転送
プッシュ通知機能
ショッピングモールで注文を処理する方法(前後順)
コールセンターのバックエンド:コールを着信順に処理する
Queueの概要
キューは、第1入力第1出力(FIFO)構造である.
まず入力されたデータを出力し,キューインタフェースのクラスがキューに関連する各種機能を提供することを実現する.
※Queueインタフェースインスタンスを生成するために、new演算子を使用してQueueインタフェースクラスを実装するジェネレータを呼び出します。
ex) Queue ob = new LinkedList();
++Queueのインタフェーススタックはクラスです!
ヒントコード説明1📝
import java.util.Queue;
import java.util.LinkedList;
public class Test152
{
public static void main(String[] args)
{
// Queue 자료 구조 생성
//Queue myQue = new Queue(); //-- (X)큐는 인터페이스라서 이렇게 생성할 수 없다!
Queue<Object> myQue = new LinkedList<Object>(); //제네릭 표현
// 데이터 준비
String str1 = "선풍기";
String str2 = "에어컨";
String str3 = "부채";
String str4 = "그늘";
//myQue 라는 Queue 자료구조에 데이터 추가
myQue.offer(str1);
myQue.offer(str2);
myQue.offer(str3);
boolean test = myQue.offer(str4);
System.out.println(myQue);
//--==>> [선풍기, 에어컨, 부채, 그늘]
//데이터의 컨트롤은 이런 더미로 하면 안된다!
//더미는 딸기 바나나 포도라고 적혀있는 쪽지 이걸로 직접적인 데이터 컨트롤 할 수 없다.
System.out.println(test);
//--==>> true
// Queue 자료구조에서 요소를 제거하지 않고 head 요소 반환
System.out.println("값1 : " +(String) myQue.element());
// -----
// 큐(데이터타입)
//---------------
// 오브젝트(데이터타입)
System.out.println("값2 : " +(String) myQue.element());
//--==>>값1 : 선풍기
// 값2 : 선풍기
System.out.println();
String val;
// 방법 ①
// peek()
//-- 큐의 head 요소 반환. 제거 안함.
// 큐가 empty 일 경우 null 반환.
/*
while (myQue.peek() != null) //-- 지영을 확인하고 제거하지 않음.
{
//poll()
//-- 큐의 head 요소 반환. 제거함.
// 큐가 empty 일 경우 null 반환
val = (String)myQue.poll(); //-- 지영을 확인하고 출력하면서 제거함.
System.out.println("요소 : " + val);
}
System.out.println();
//--==>> 요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
// 픽폴하는건데 지금은 폴폴하면 두개당 하나씩나와서 에어컨나오고 그늘 나옴
//String[] arr = {"홍길동", "이순신", "강감찬"};
// ----------------------------
// 문자열(데이터타입)
*/
//테스트
/*
while (myQue.poll() != null)
{
val = (String)myQue.poll();
System.out.println("요소 : " + val);
}
System.out.println();
*/
//--==>> 요소 : 에어컨
// 요소 : 그늘
// 방법 ②
/*
while (true) //무한루프
{
val = (String)myQue.poll();
if (val==null)
break;
else
System.out.println("요소 : " + val);
}
System.out.println();
*/
//--==>>요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
// 방법 ③
while (!myQue.isEmpty())
{
val = (String)myQue.poll();
System.out.println("요소 : " +val);
}
System.out.println();
//--==>>요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
}
}
ヒントコード説明2📝
import java.util.Queue;
import java.util.LinkedList;
public class Test153
{
// 정적 문자열 배열 선언 및 초기화
private static final String[] colors = {"검정", "노랑", "초록", "파랑", "빨강", "연두"};
public static void main(String[] args)
{
// Queue 자료구조 생성
Queue<String> qu = new LinkedList<String>();
//-- Queue 인터페이스 기반의 인스턴스를 생성하기 위해서는
// new 연산자를 이용하여 Queue 인터페이스를 implements 한
// 하위 클래스의 생성자를 호출해야 한다.
// qu 라는 Queue 자료구조에
// color 배열의 데이터 입력 -> offer()
for (String color : colors)
qu.offer(color); //--지정된 요소를 큐에 삽입한다.
// qu 라는 Queue 자료구조의 모든 데이터 전체 출력
while (qu.peek() != null)
System.out.print(qu.poll() + " ");
System.out.println();
//-- peek()
// : 큐의 head 요소를 반환하고 삭제하지 않으며
// 큐 자료구조가 비어있는 상태가 되면 null 반환
//-- poll()
// : 큐의 head요소를 반환하고 삭제하며
// 큐 자료구조가 비어있는 상태가 되면 null 반환
//--==>> 검정 노랑 초록 파랑 빨강 연두
}
}
Reference
この問題について([AVA]21日目(収集フレーム/キュー)), 我々は、より多くの情報をここで見つけました
https://velog.io/@hyojin_j/JAVA21일차큐Queue...ing
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.util.Queue;
import java.util.LinkedList;
public class Test152
{
public static void main(String[] args)
{
// Queue 자료 구조 생성
//Queue myQue = new Queue(); //-- (X)큐는 인터페이스라서 이렇게 생성할 수 없다!
Queue<Object> myQue = new LinkedList<Object>(); //제네릭 표현
// 데이터 준비
String str1 = "선풍기";
String str2 = "에어컨";
String str3 = "부채";
String str4 = "그늘";
//myQue 라는 Queue 자료구조에 데이터 추가
myQue.offer(str1);
myQue.offer(str2);
myQue.offer(str3);
boolean test = myQue.offer(str4);
System.out.println(myQue);
//--==>> [선풍기, 에어컨, 부채, 그늘]
//데이터의 컨트롤은 이런 더미로 하면 안된다!
//더미는 딸기 바나나 포도라고 적혀있는 쪽지 이걸로 직접적인 데이터 컨트롤 할 수 없다.
System.out.println(test);
//--==>> true
// Queue 자료구조에서 요소를 제거하지 않고 head 요소 반환
System.out.println("값1 : " +(String) myQue.element());
// -----
// 큐(데이터타입)
//---------------
// 오브젝트(데이터타입)
System.out.println("값2 : " +(String) myQue.element());
//--==>>값1 : 선풍기
// 값2 : 선풍기
System.out.println();
String val;
// 방법 ①
// peek()
//-- 큐의 head 요소 반환. 제거 안함.
// 큐가 empty 일 경우 null 반환.
/*
while (myQue.peek() != null) //-- 지영을 확인하고 제거하지 않음.
{
//poll()
//-- 큐의 head 요소 반환. 제거함.
// 큐가 empty 일 경우 null 반환
val = (String)myQue.poll(); //-- 지영을 확인하고 출력하면서 제거함.
System.out.println("요소 : " + val);
}
System.out.println();
//--==>> 요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
// 픽폴하는건데 지금은 폴폴하면 두개당 하나씩나와서 에어컨나오고 그늘 나옴
//String[] arr = {"홍길동", "이순신", "강감찬"};
// ----------------------------
// 문자열(데이터타입)
*/
//테스트
/*
while (myQue.poll() != null)
{
val = (String)myQue.poll();
System.out.println("요소 : " + val);
}
System.out.println();
*/
//--==>> 요소 : 에어컨
// 요소 : 그늘
// 방법 ②
/*
while (true) //무한루프
{
val = (String)myQue.poll();
if (val==null)
break;
else
System.out.println("요소 : " + val);
}
System.out.println();
*/
//--==>>요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
// 방법 ③
while (!myQue.isEmpty())
{
val = (String)myQue.poll();
System.out.println("요소 : " +val);
}
System.out.println();
//--==>>요소 : 선풍기
// 요소 : 에어컨
// 요소 : 부채
// 요소 : 그늘
}
}
import java.util.Queue;
import java.util.LinkedList;
public class Test153
{
// 정적 문자열 배열 선언 및 초기화
private static final String[] colors = {"검정", "노랑", "초록", "파랑", "빨강", "연두"};
public static void main(String[] args)
{
// Queue 자료구조 생성
Queue<String> qu = new LinkedList<String>();
//-- Queue 인터페이스 기반의 인스턴스를 생성하기 위해서는
// new 연산자를 이용하여 Queue 인터페이스를 implements 한
// 하위 클래스의 생성자를 호출해야 한다.
// qu 라는 Queue 자료구조에
// color 배열의 데이터 입력 -> offer()
for (String color : colors)
qu.offer(color); //--지정된 요소를 큐에 삽입한다.
// qu 라는 Queue 자료구조의 모든 데이터 전체 출력
while (qu.peek() != null)
System.out.print(qu.poll() + " ");
System.out.println();
//-- peek()
// : 큐의 head 요소를 반환하고 삭제하지 않으며
// 큐 자료구조가 비어있는 상태가 되면 null 반환
//-- poll()
// : 큐의 head요소를 반환하고 삭제하며
// 큐 자료구조가 비어있는 상태가 되면 null 반환
//--==>> 검정 노랑 초록 파랑 빨강 연두
}
}
Reference
この問題について([AVA]21日目(収集フレーム/キュー)), 我々は、より多くの情報をここで見つけました https://velog.io/@hyojin_j/JAVA21일차큐Queue...ingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol