|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.AbstractCollection <E>
java.util.AbstractQueue <E>
java.util.concurrent.PriorityBlockingQueue<E>
E
- 컬렉션내에 존재하는 요소의 형태public class PriorityBlockingQueue<E>
PriorityQueue
클래스와 같은 순서부 룰을 사용해, 블록 하는 취득 오퍼레이션을 제공하는, 안 바운드 형식블로킹 큐입니다. 이 큐는 논리적이게는 안 바운드 형식입니다만, 추가를 시도해도 자원 부족에보다 OutOfMemoryError 가 발생해 실패하는 일이 있습니다. 이 클래스는,null 요소를 허용 하지 않습니다. Comparable 의 자연 순서부에 근거하는 우선도 큐에서는, 비교 불가능한 객체의 삽입도 허가되지 않습니다 (실행하면(자) ClassCastException 가 throw 된다).
이 클래스와 그 반복자는,Collection
및 Iterator
인터페이스의 「옵션」메소드 모든 것을 구현합니다. iterator()
메소드내에서 제공되는 Iterator 에서는, 특정의 순서로 PriorityBlockingQueue 의 요소를 횡단(traverse) 하는 것은 보증되지 않습니다. 요소를 횡단(traverse) 하는 순서를 지정할 필요가 있는 경우는,Arrays.sort(pq.toArray()) 의 사용을 고려해 주세요. 또,drainTo 메소드를 사용해, 우선 순위순서에 일부 또는 모든 요소를 삭제해, 그것들을 다른 컬렉션에 배치할 수도 있습니다.
이 클래스의 오퍼레이션에서는, 우선 순위가 같은 요소의 순서부에 대해 보증이 없습니다. 순서부를 적용할 필요가 있는 경우는, 커스텀의 클래스 또는 Comparator를 정의해, 제 1 의 우선 순위치가 같은 경우에 순서 붙이고 하기 위해서 제 2 의 키를 사용할 수가 있습니다. 예를 들어 다음의 클래스에서는, 비교 가능한 요소에 대해서 요소의 우선 순위가 같은 경우는, 선입선출 방식의 순서부를 적용합니다. 이 클래스를 사용하려면 , 일반적으로의 엔트리 객체 대신에 new FIFOEntry(anEntry) 를 삽입합니다.
class FIFOEntry<E extends Comparable<? super E>> implements Comparable<FIFOEntry<E>> { final static AtomicLong seq = new AtomicLong(); final long seqNum; final E entry; public FIFOEntry(E entry) { seqNum = seq.getAndIncrement(); this.entry = entry; } public E getEntry() { return entry; } public int compareTo(FIFOEntry<E> other) { int res = entry.compareTo(other.entry); if (res == 0 && other.entry ! = this.entry) res = (seqNum < other.seqNum ? -1 : 1); return res; } }
이 클래스는,Java Collections Framework 의 멤버입니다.
생성자 의 개요 | |
---|---|
PriorityBlockingQueue ()
Comparable 의 자연 순서부에 따라 요소를 순서 붙이고 하는 디폴트의 초기 용량 (11)을 사용해,PriorityBlockingQueue 를 작성합니다. |
|
PriorityBlockingQueue (Collection <? extends E > c)
지정된 컬렉션내의 요소를 포함한 PriorityBlockingQueue 를 작성합니다. |
|
PriorityBlockingQueue (int initialCapacity)
Comparable 의 자연 순서부에 따라 요소를 순서 붙이고 하는, 지정된 초기 용량을 가지는 PriorityBlockingQueue 를 작성합니다. |
|
PriorityBlockingQueue (int initialCapacity,
Comparator <? super E > comparator)
지정된 Comparator에 따라 요소를 순서 붙이고 하는, 지정된 초기 용량을 가지는 PriorityBlockingQueue 를 작성합니다. |
메소드의 개요 | ||
---|---|---|
boolean |
add (E e)
지정된 요소를 이 우선도 큐에 삽입합니다. |
|
void |
clear ()
모든 요소를 이 큐로부터 원자적으로 삭제합니다. |
|
Comparator <? super E > |
comparator ()
이 큐내의 요소를 순서 붙이고 하는데 사용하는 Comparator를 돌려줍니다. |
|
boolean |
contains (Object o)
이 큐로 지정된 요소가 포함되어 있는 경우에 true 를 돌려줍니다. |
|
int |
drainTo (Collection <? super E > c)
이 큐로부터 이용 가능한 모든 요소를 삭제해, 그것들이 지정된 컬렉션에 추가합니다. |
|
int |
drainTo (Collection <? super E > c,
int maxElements)
지정된 수이내의 이용 가능한 요소를 이 큐로부터 삭제해, 지정된 컬렉션에 추가합니다. |
|
Iterator <E > |
iterator ()
이 큐내의 요소의 반복자를 돌려줍니다. |
|
boolean |
offer (E e)
지정된 요소를 이 우선도 큐에 삽입합니다. |
|
boolean |
offer (E e,
long timeout,
TimeUnit unit)
지정된 요소를 이 우선도 큐에 삽입합니다. |
|
E |
peek ()
큐의 선두를 가져옵니다만, 삭제하지 않습니다. |
|
E |
poll ()
큐의 선두를 취득 및 삭제합니다. |
|
E |
poll (long timeout,
TimeUnit unit)
이 큐의 선두를 취득해 삭제합니다. |
|
void |
put (E e)
지정된 요소를 이 우선도 큐에 삽입합니다. |
|
int |
remainingCapacity ()
PriorityBlockingQueue 는 용량 제약을 받지 않기 때문에, 항상 Integer.MAX_VALUE 를 돌려줍니다. |
|
boolean |
remove (Object o)
지정된 요소의 단일의 인스턴스가 이 큐에 존재하는 경우는, 큐로부터 삭제합니다. |
|
int |
size ()
이 컬렉션중의 요소의 수를 돌려줍니다. |
|
E |
take ()
이 큐의 선두를 취득해 삭제합니다. |
|
Object [] |
toArray ()
이 큐의 요소가 모두 포함되어 있는 배열을 돌려줍니다. |
|
|
toArray (T[] a)
이 큐내의 모든 요소를 포함한 배열을 돌려줍니다. |
|
String |
toString ()
이 컬렉션의 캐릭터 라인 표현을 돌려줍니다. |
클래스 java.util. AbstractQueue 로부터 상속된 메소드 |
---|
addAll , element , remove |
클래스 java.util. AbstractCollection 로부터 상속된 메소드 |
---|
containsAll , isEmpty , removeAll , retainAll |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
인터페이스 java.util. Queue 로부터 상속된 메소드 |
---|
element , remove |
인터페이스 java.util. Collection 로부터 상속된 메소드 |
---|
addAll , containsAll , equals , hashCode , isEmpty , removeAll , retainAll |
생성자 의 상세 |
---|
public PriorityBlockingQueue()
public PriorityBlockingQueue(int initialCapacity)
initialCapacity
- 이 우선도 큐의 초기 용량
IllegalArgumentException
- initialCapacity 가 1 미만의 경우public PriorityBlockingQueue(int initialCapacity, Comparator <? super E > comparator)
initialCapacity
- 이 우선도 큐의 초기 용량comparator
- 이 우선도 큐를 순서 붙이고 하기 위해서 사용되는 Comparator.
null
의 경우, 요소Comparable 의 자연 순서부가 사용된다
IllegalArgumentException
- initialCapacity 가 1 미만의 경우public PriorityBlockingQueue(Collection <? extends E > c)
SortedSet
또는 PriorityQueue
인 경우, 이 우선도 큐의 순서부는, 그것과 같은 순서부에 따라 행해집니다. 그 이외의 경우, 이 우선도 큐의 순서부는, 그 요소Comparable 의 자연 순서부에 따라 행해집니다.
c
- 요소가 우선도 큐에 배치되는 컬렉션
ClassCastException
- 지정된 컬렉션의 요소를 우선도 큐의 순서부에 따라 상호 비교할 수 없는 경우
NullPointerException
- 지정된 컬렉션, 또는 그 요소중 한쪽이 null 의 경우메소드의 상세 |
---|
public boolean add(E e)
Collection <E >
내의 add
BlockingQueue <E >
내의 add
Queue <E >
내의 add
AbstractQueue <E >
내의 add
e
- 추가하는 요소
Collection.add(E)
로 지정되고 있는 대로)
ClassCastException
- 지정된 요소를, 우선도 큐에 현재 존재하는 요소와 우선도 큐의 순서부에 따라 비교할 수 없는 경우
NullPointerException
- 지정된 요소가 null 인 경우public boolean offer(E e)
BlockingQueue <E >
내의 offer
Queue <E >
내의 offer
e
- 추가하는 요소
Queue.offer(E)
로 지정되고 있는 대로)
ClassCastException
- 지정된 요소를, 우선도 큐에 현재 존재하는 요소와 우선도 큐의 순서부에 따라 비교할 수 없는 경우
NullPointerException
- 지정된 요소가 null 인 경우public void put(E e)
BlockingQueue <E >
내의 put
e
- 추가하는 요소
ClassCastException
- 지정된 요소를, 우선도 큐에 현재 존재하는 요소와 우선도 큐의 순서부에 따라 비교할 수 없는 경우
NullPointerException
- 지정된 요소가 null 인 경우public boolean offer(E e, long timeout, TimeUnit unit)
BlockingQueue <E >
내의 offer
e
- 추가하는 요소timeout
- 메소드가 블록을 실행할 것은 없기 때문에, 이 파라미터는 무시되는unit
- 메소드가 블록을 실행할 것은 없기 때문에, 이 파라미터는 무시된다
ClassCastException
- 지정된 요소를, 우선도 큐에 현재 존재하는 요소와 우선도 큐의 순서부에 따라 비교할 수 없는 경우
NullPointerException
- 지정된 요소가 null 인 경우public E poll()
Queue
의 기술:
Queue <E >
내의 poll
public E take() throws InterruptedException
BlockingQueue
의 기술:
BlockingQueue <E >
내의 take
InterruptedException
- 대기중에 인터럽트가 발생했을 경우public E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingQueue
의 기술:
BlockingQueue <E >
내의 poll
timeout
- 처리를 중지할 때까지의 대기 시간. 단위는 unitunit
- timeout 파라미터의 해석 방법을 결정하는 TimeUnit
InterruptedException
- 대기중에 인터럽트가 발생했을 경우public E peek()
Queue
의 기술:
Queue <E >
내의 peek
public Comparator <? super E > comparator()
public int size()
Collection
의 기술:
Collection <E >
내의 size
AbstractCollection <E >
내의 size
public int remainingCapacity()
BlockingQueue <E >
내의 remainingCapacity
public boolean remove(Object o)
o.equals(e)
가 되는 요소 e
가 이 큐내에 1 개 이상 포함되어 있는 경우에, 그 1 개(살)을 삭제합니다. 이 큐로 지정된 요소가 포함되어 있었을 경우 (즉, 호출의 결과로서 이 큐가 변경되었을 경우)에만,true
를 돌려줍니다.
Collection <E >
내의 remove
BlockingQueue <E >
내의 remove
AbstractCollection <E >
내의 remove
o
- 큐로부터 삭제되는 요소 (그 요소가 존재하는 경우)
public boolean contains(Object o)
true
를 돌려줍니다. 즉, 큐에 o.equals(e)
가 되는 요소 e
가 1 개 이상 포함되어 있는 경우에만 true
를 돌려줍니다.
Collection <E >
내의 contains
BlockingQueue <E >
내의 contains
AbstractCollection <E >
내의 contains
o
- 이 큐에 포함되어 있는지 어떤지를 조사하는 객체
public Object [] toArray()
반환되는 배열에의 참조를 이 큐가 유지하지 않는다고 하는 점으로써, 이 배열은 안전합니다. (즉, 이 메소드는 새로운 배열을 할당할 필요가 있습니다). 이 때문에, 호출측은, 반환된 배열을 자유롭게 변경할 수 있습니다.
메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다.
Collection <E >
내의 toArray
AbstractCollection <E >
내의 toArray
public String toString()
AbstractCollection
의 기술:String.valueOf(Object)
를 실행했는지와 같이 캐릭터 라인에 변환됩니다.
AbstractCollection <E >
내의 toString
public int drainTo(Collection <? super E > c)
BlockingQueue
의 기술:
BlockingQueue <E >
내의 drainTo
c
- 요소의 전송처의 컬렉션
UnsupportedOperationException
- 지정된 컬렉션으로 추가의 요소가 지원되어 있지 않은 경우
ClassCastException
- 이 큐의 요소의 클래스가 원인으로, 그 요소가 지정된 컬렉션에 추가할 수 없는 경우
NullPointerException
- 지정된 컬렉션이 null 인 경우
IllegalArgumentException
- 지정된 컬렉션이 이 큐인 경우, 또는 이 큐의 요소가 있는 프로퍼티이 원인으로 지정된 컬렉션에 추가할 수 없는 경우public int drainTo(Collection <? super E > c, int maxElements)
BlockingQueue
의 기술:
BlockingQueue <E >
내의 drainTo
c
- 요소의 전송처의 컬렉션maxElements
- 전송 하는 요소의 최대수
UnsupportedOperationException
- 지정된 컬렉션으로 추가의 요소가 지원되어 있지 않은 경우
ClassCastException
- 이 큐의 요소의 클래스가 원인으로, 그 요소가 지정된 컬렉션에 추가할 수 없는 경우
NullPointerException
- 지정된 컬렉션이 null 인 경우
IllegalArgumentException
- 지정된 컬렉션이 이 큐인 경우, 또는 이 큐의 요소가 있는 프로퍼티이 원인으로 지정된 컬렉션에 추가할 수 없는 경우public void clear()
Collection <E >
내의 clear
AbstractQueue <E >
내의 clear
public <T> T[] toArray(T[] a)
큐가 지정된 배열에 들어가, 그 배열에 한층 더 여유가 있는 경우 (즉, 배열이 큐보다 많은 요소를 가지는 경우), 그 배열내에서 큐의 끝보다 나머지의 요소는 null 로 설정됩니다.
toArray()
메소드와 같이, 이 메소드는, 배열 베이스의 API 와 컬렉션 베이스의 API 의 사이의 중개역으로서 기능합니다. 게다가 이 메소드에서는, 출력 배열의 실행시의 형태를 정확하게 제어할 수 있기 (위해)때문에, 환경에 따라서는 할당의 수고를 억제할 수가 있습니다.
x 가, 캐릭터 라인만으로부터 되는 큐인 것을 알 수 있고 있으면(자) 가정합니다. 다음의 코드를 사용하면(자), 새롭게 할당할 수 있었던 String 의 배열에 큐를 덤프 할 수 있습니다.
String[] y = x.toArray(new String[0]);toArray(new Object[0]) 는, 기능의 점으로써 toArray() 와 동일합니다.
Collection <E >
내의 toArray
AbstractCollection <E >
내의 toArray
a
- 배열이 충분한 크기를 가지는 경우는, 큐의 요소가 포함되는 배열. 그렇지 않은 경우는, 요소를 포함하기 위해서 같은 실행시의 형태의 새로운 배열을 할당할 수 있다
ArrayStoreException
- 지정된 배열의 실행시의 형태가, 이 큐내의 모든 요소의 실행시의 형태의 슈퍼타입이 아닌 경우
NullPointerException
- 지정된 배열이 null 인 경우public Iterator <E > iterator()
ConcurrentModificationException
를 throw 할 것은 없고, 반복자의 구축시에 존재한 요소를 횡단(traverse) 하는 것을 보증합니다. 또, 구축 후의 모든 변경을 반영합니다 (다만 보증되지는 않았다).
Iterable <E >
내의 iterator
Collection <E >
내의 iterator
AbstractCollection <E >
내의 iterator
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.