우선 순위 대기열
각 요소가 우선 순위를 표시하기 위해 숫자를 할당하면 더 적은 숫자가 더 높은 우선 순위를 가질 수 있으므로 컬렉션에서 가장 높은 우선 순위 요소에 액세스하고 검색하고 삭제할 수 있습니다. 이런 식으로 우선 순위 큐와 같은 데이터 구조를 소개합니다. 우선 순위 큐는 0 이상의 요소 모음이며 각 요소는 우선 순위가 있습니다. 우선 순위 대기열에서 수행 된 작업에는 (1) 검색 (2) 새 요소 삽입 (3) 삭제가 포함됩니다. 일반적으로 검색 작업은 최우선 순위가 가장 높은 요소를 검색하는 데 사용되며 삭제 작업은 요소를 삭제하는 데 사용됩니다. 우선 순위가 동일한 요소의 경우 첫 번째 명령 또는 우선 순위로 처리 할 수 있습니다.
Java 배열 시뮬레이션 큐
큐는 테이블의 프론트 엔드에서만 삭제 작업을 허용하고 테이블 뒷부분에 작업을 삽입 할 수있는 특수 선형 테이블입니다. 삽입 작업을 수행하는 끝을 팀의 꼬리라고하며 삭제 작업을 수행하는 끝을 팀의 헤드라고합니다. 이것은 우리가 자주 사용하는 최초의 첫 번째 원칙 (FIFO)입니다. Java의 목록은 대기열로 사용할 수 있습니다. 큐 끝에 요소를 추가하면 List.Add 메소드를 사용하고 큐 헤드에서 요소를 삭제하면 List.Remove 메소드를 사용하십시오.
Java 배열 시뮬레이션 우선 큐 구조 예 :
패키지 데이터 인프라; import java.util.arrays; import java.util.comparator; / *** 우선 순위가 높은 첫 번째 순위 및 첫 번째 아웃 라인 선형 테이블 구조를 시뮬레이션하기 위해 배열을 사용합니다.* 비교기를 사용하여 TreeSet 및 Treemap과 유사합니다*/ public static void main (String [] args) {SimulatePriorityQueue queue = new SimulatePriorityQueue (4); // SIMULATEQUEUE QUEUE = NEW SIMULATEQUEUE (); // system.out.println ( "요소를 가져 오십시오 :" + queue.remove ()); queue.insert (1); queue.insert (3); queue.insert (2); queue.insert (5); queue.insert (4); System.out.println ( "size :" + queue.size ()); System.out.println ( "Peek :" + queue.peek ()); System.out.println ( "테이크 아웃 요소 :" + queue.peek ()); System.out.println ( "테이크 아웃 요소 :" + queue.remove ()); System.out.println ( "테이크 아웃 요소 :" + queue.remove ()); System.out.println ( "추출 요소 :" + queue.remove ()); // system.out.println ( "추출 요소 :" + queue.remove ()); System.out.println ( "size :" + queue.size ()); System.out.println (); } private int msize = 3; // 크기 개인 int [] Marray; // 배열 private int mnextitem; // 다음 위치는 또한 현재 요소의 수로 간주 될 수 있습니다. public simulatepriorityqueue () {marray = new int [msize]; mnextitem = 0; } public simulatepriorityqueue (int size) {this.msize = size; Marray = 새로운 int [msize]; mnextitem = 0; } / *** 요소 삽입* @param 항목* / public void insert (int item) {if (! isfull ()) {marray [mnextitem ++] = item; for (int i = 0; i <mnextitem; i ++) {// bubblestone for (int j = 0; System.out.println (Arrays.tostring (Marray)); }} system.out.println (Arrays.tostring (Marray)); } else {System.out.println ( "---------------"); }} / *** 요소를 제거하십시오 First-in First-out* @return* / public int remove () {if (! isempty ()) {return marray [-mnextitem]; } else {새로운 불법 불법 행정 exception ( "요소가 제거 할 수 없음"); }} / *** 이전 요소를 확인하십시오* @return* / public int peek () {return marray [mnextitem -1]; } / *** 비어 있는가* @return* / public boolean isempty () {return mnextitem == 0; } / *** 전체* @return* / public boolean isfull () {return mnextitem == msize; } / ** * size * @return * / public int size () {return mnextitem; }} 출력 결과 :
[1, 0, 0, 0][1, 3, 0, 0][1, 2, 3, 0][1, 2, 3, 0][1, 2, 3, 5]---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------