강력한 프로그래밍 언어이며 프로그래머의 삶을 편하게 해주는 다양한 데이터 구조를 지원합니다. 이 기사에서는 이러한 데이터 구조 인 Java Queue를 살펴 보겠습니다. 다음은이 기사에서 초점을 맞춘 포인터입니다.
그럼 시작하겠습니다.
자바의 대기열
큐는 FIFO (First-In-First-Out) 원칙을 따르는 데이터 구조입니다. 즉, 요소는 목록의 끝에 삽입되고 목록의 처음부터 삭제됩니다. 이 인터페이스는 java.util.package에서 사용할 수 있으며 컬렉션 인터페이스를 확장합니다.
큐는 삽입 및 삭제를 포함한 여러 방법을 지원합니다. java.util.package에서 사용할 수있는 대기열은 다음과 같습니다. 무제한 대기열 , java.util.concurrent 패키지에있는 큐는 알려진 반면 제한된 대기열.
Deques를 제외한 모든 대기열은 끝에 삽입 및 전면 삭제를 지원합니다. Deques는 양쪽 끝에서 요소의 삽입 및 삭제를 지원합니다.
Java Queue에 대한이 기사의 다음 주제로 이동하겠습니다.
자바 대기열 구현
큐 인터페이스를 사용하려면 구체적인 클래스를 인스턴스화해야합니다. 다음은 사용할 수있는 몇 가지 구현입니다.
- util.LinkedList
- util.PriorityQueue
이러한 구현은 스레드로부터 안전하지 않기 때문에 PriorityBlockingQueue는 스레드로부터 안전한 구현의 대안으로 작동합니다.
PHP mysql_fetch_array
예:
큐 q1 = new LinkedList ()
대기열 q2 = new PriorityQueue ()
몇 가지 중요한 Java Queue 메서드를 살펴 보겠습니다.
Java 대기열의 메소드
- 더하다(): add () 메서드는 대기열의 끝 또는 끝 부분에 요소를 삽입하는 데 사용됩니다. 이 메서드는 Collection 인터페이스에서 상속됩니다.
- 제공(): offer () 메서드는 용량 제한을 위반하지 않고 지정된 요소를 큐에 삽입하므로 add () 메서드보다 선호됩니다.
- 몰래 엿보다(): peek () 메서드는 큐를 제거하지 않고 큐의 앞쪽을 보는 데 사용됩니다. 큐가 비어 있으면 null 값을 반환합니다.
- 요소(): 큐가 비어 있으면 메서드는 NoSuchElementException을 throw합니다.
- 없애다(): remove () 메서드는 대기열의 앞부분을 제거하고 반환합니다. 큐가 비어 있으면 NoSuchElementException이 발생합니다.
- 투표(): poll () 메서드는 큐의 시작 부분을 제거하고 반환합니다. 큐가 비어 있으면 null 값을 반환합니다.
다음 방법에 대한 개요는 다음과 같습니다.
조작 | 예외 발생 | 반환 값 |
끼워 넣다 | 추가 (요소) | 제공 (요소) |
없애다 | 없애다() | 투표() |
조사 | 요소() | 몰래 엿보다() |
이제 데모를 살펴 보겠습니다.
대기열 방법을 보여주는 프로그램
import java.util. * public class Main {public static void main (String [] args) {// 큐가 인터페이스이기 때문에 인스턴스를 생성 할 수 없으므로 큐 q1 = new LinkedList () // 요소 추가 큐 q1.add ( 'I') q1.add ( 'Love') q1.add ( 'Rock') q1.add ( 'And') q1.add ( 'Roll') System.out.println ( 'Elements in Queue : '+ q1) / * * remove () 메서드를 사용하여 Queue에서 요소를 제거 할 수 있습니다. * 이는 Queue에서 첫 번째 요소를 제거합니다. * / System.out.println ('Removed element : '+ q1.remove ( )) / * * element () 메서드-* Queue의 헤드를 반환합니다. * / System.out.println ( 'Head :'+ q1.element ()) / * * poll () 메서드-큐의 * 헤드를 제거하고 반환합니다. Queue가 비어 있으면 null을 반환합니다. * / System.out.println ( 'poll () :'+ q1.poll ()) / * * peek () 메서드-element () 메서드와 동일하게 작동하지만 *하지만 반환합니다 Queue가 비어 있으면 null * / System.out.println ( 'peek () :'+ q1.peek ()) // 큐의 요소 표시 System.out.println ( 'Elements in Queue :'+ q1)} }
산출:
대기열의 요소 : [I, Love, Rock, And, Roll]
제거 된 요소 : I
머리 : 사랑
poll () : 사랑
peek () : 록
대기열의 요소 : [Rock, And, Roll]. 위의 예에서는 Generic Queue가 사용되었습니다.
이 유형의 대기열에서는 대기열에 삽입되는 객체 유형을 제한 할 수 있습니다. 이 예에서는 문자열 인스턴스 만 대기열에 삽입 할 수 있습니다.
Java 대기열을 통해 반복
Java 큐의 요소는 다음 코드를 사용하여 반복 할 수 있습니다.
큐 q1 = new LinkedList ()
q1.add ( '록')
q1.add ( 'And')
q1.add ( '롤')
// 반복자를 통해 액세스
반복기 반복기 = q1.iterator ()
while (iterator.hasNext () {
문자열 요소 = (String) iterator.next ()
}
// 새로운 for 루프를 통해 액세스
for (객체 객체 : q1) {
문자열 요소 = (문자열) 객체
}
요소가 반복되는 순서는 큐 구현에 따라 다릅니다.
Java Queue가 구현할 수있는 여러 메서드가 있지만 여기서는 가장 중요한 메서드에 대해 설명했습니다.
goto C ++ 사용 방법
따라서 우리는 'Java Queue'에 대한이 기사의 끝까지 왔습니다. 더 자세히 알고 싶다면체크 아웃 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.
질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.