티스토리 뷰
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Queue.html#method.summary
public interface Queue<E> extends Collection<E>
Collection 인터페이스를 상속하는 Queue 인터페이스
(인터페이스가 인터페이스를 상속받을때는 implements가 아니라 extends를 사용한다)
A collection designed for holding elements prior to processing. Besides basic Collection operations, queues provide additional insertion, extraction, and inspection operations.
processing 이전에 elements를 담아두기 위한 자료구조 Collection
기본적인 Collection operation 이외에도 큐는 추가적으로 삽입, 추출, 탐색 동작을 제공한다.
Each of these methods exists in two forms: one throws an exception if the operation fails, the other returns a special value (either null or false, depending on the operation).
각각의 메서드들은 두개의 형태로 이루어져있다
- 하나는 exception을 던지는 형태
- 다른 하나는 null or false 값을 리턴하는 형태.
The latter form of the insert operation is designed specifically for use with capacity-restricted Queue implementations; in most implementations, insert operations cannot fail.
삽입 작업의 후자 형식은 특별히 capacity-restricted(크기 제한) 큐 구현을 위해 만들어졌다
( -- add(e)의 경우 exception을 던지는데 반해 offer(e)는 특정 값(false)만 리턴하니까 )
; 대부분의 구현에서 삽입 작업은 실패하지 않는다..
Queues typically, but do not necessarily, order elements in a FIFO (first-in-first-out) manner.
큐는 일반적으로 FIFO(First In First Out) 방식으로 elements를 정렬한다.
Among the exceptions are priority queues, which order elements according to a supplied comparator, or the elements' natural ordering, and LIFO queues (or stacks) which order the elements LIFO (last-in-first-out).
그중에서 예외로는 supplied comparator 또는 elements' natural ordering에 따라 elements를 정렬하는 priority queues(우선순위 큐), 그리고 LIFO 방식을 사용하는 LIFO 큐(또는 스택)가 있다.
Whatever the ordering used, the head of the queue is that element which would be removed by a call to remove() or poll().
어떤 정렬방법을 사용하던지간에 remove() 또는 poll() 메서드를 사용하면 큐의 head에서 element가 삭제된다
In a FIFO queue, all new elements are inserted at the tail of the queue.
FIFO 큐에서는 모든 새로운 elements는 큐의 tail에 삽입된다.
Other kinds of queues may use different placement rules. Every Queue implementation must specify its ordering properties.
다른 종류의 큐는 다른 정렬규칙을 사용할 수도 있다.
모든 큐는 인터페이스를 구현할 때 반드시 자신의 정렬 특성을 구체화 해야한다
The offer method inserts an element if possible, otherwise returning false.
offer method는 가능하다면 element를 삽입한다, 실패하면 false를 리턴한다
This differs from the Collection.add method, which can fail to add an element only by throwing an unchecked exception.
offer 메소드가 add 메소드와 다른점은 add는 삽입에 실패하면 unchecked exception을 던진다는 부분에 있다
The offer method is designed for use when failure is a normal, rather than exceptional occurrence, for example, in fixed-capacity (or "bounded") queues.
offer 메소드는 fixed-capacity(bounded) 큐와 같이 실패가 평범한 경우일때 사용하도록 만들어졌다
(if문으로 큐가 꽉 차면 삽입을 못하게 막을 수 있으니까)
The remove() and poll() methods remove and return the head of the queue.
remove(), poll() 메소드는 큐의 head에서 값을 리턴하고 제거한다
which element is removed from the queue is a function of the queue's ordering policy, which differs from implementation to implementation.
큐에서 어떤 element가 삭제될지는 큐 각자의 정렬규칙에 따라 다르다
The remove() and poll() methods differ only in their behavior when the queue is empty: the remove() method throws an exception, while the poll() method returns null.
remove()와 poll()의 차이는 큐가 비어있을때 remove는 exception을 던지고 poll은 null을 리턴한다는 점에 있다
The element() and peek() methods return, but do not remove, the head of the queue.
element()와 peek() 메소드는 큐의 head의 값을 리턴하는데 삭제하지는 않는다
The Queue interface does not define the blocking queue methods, which are common in concurrent programming.
큐 인터페이스는 concurrent programming(동시 프로그래밍..병렬 프로그래밍?)에서 흔한 'blocking queue methods'를 정의하지 않았다
These methods, which wait for elements to appear or for space to become available, are defined in the BlockingQueue interface, which extends this interface.
element가 나타날때까지 대기하거나, 공간이 생길때까지 대기하는 이 메소드들은 Queue 인터페이스를 상속(구현)하는 BlockingQueue 인터페이스에 정의되어 있다
( Collection 인터페이스 --상속>> Queue 인터페이스 --상속>> BlockingQueue 인터페이스 )
Queue implementations generally do not allow insertion of null elements, although some implementations, such as LinkedList, do not prohibit insertion of null.
LinkedList같은 구현과는 달리 일반적으로 큐는 null 값의 삽입을 금지한다
Even in the implementations that permit it, null should not be inserted into a Queue, as null is also used as a special return value by the poll method to indicate that the queue contains no elements.
구현이 null값 삽입을 혀용한다 해도 null은 큐에 삽입되어서는 안된다, 왜냐면 null값은 poll 메소드가 큐에 아무 값이 없을때 리턴하는 special value와 같기 때문이다.
Queue implementations generally do not define element-based versions of methods equals and hashCode but instead inherit the identity based versions from class Object, because element-based equality is not always well-defined for queues with the same elements but different ordering properties.
큐 구현은 elemen-based로 하는 equals나 hashCode 메소드를 정의 하지는 않고 Object 클래스에 구현되어있는 identity-based version을 상속받아 쓴다..(?) 왜냐하면 element-based에서의 같음은 같은 elements를 가졌지만 다른 정렬규칙을 가진 큐들에서는 명확하게 정의되어있지 않기 때문이다(?)
(원소값이 같은지를 비교하지 않고 identity... 신분... -> 참조하는 주소값이 같은지를 비교하는 것 같다?)
(Object 클래스 : 모든 클래스의 최상위 클래스 --- 여기에 equals와 hashCode 메소드가 정의되어있고 상속받는 클래스가 필요에 따라 재정의해서 쓴다)
3줄 요약
1. 큐는 FIFO, 선입선출
2. 삽입, 삭제, 탐색은 각각 두가지 방식이 있는데 하나는 예외를 던지고 하나는 특정 값을 리턴한다
3. 큐에 NULL값 삽입은 안됨
예외를 던지는 놈 : add, remove, element
특정 값을 리턴하는 놈 : offer, poll, peek
-------------------------------
겉보기엔 짧아보였는데 생각보다 번역하는데 시간이 많이 걸렸다
단어를 모르는건 적은데 문맥이 생각보다 뭔소리인지 못알아 먹겠는 부분이 많았다.
아마 내 자바 배경지식이 부족하기 때문인 것 같다
그래서 자주는 못할 것 같다
1주일에 1~2번만 해도 떡을 치고도 남을듯
'JAVA' 카테고리의 다른 글
자바 정렬 알고리즘 기본 형태 | 버블, 선택, 삽입, 합병, 퀵 (0) | 2021.08.19 |
---|---|
자바 알고리즘 정복 3 - 스택, 큐 (0) | 2021.08.07 |
자바 알고리즘 정복 2 - 제네릭, 접근제한자 (0) | 2021.08.06 |
자바 알고리즘 정복 - 1 (0) | 2021.08.03 |
영어공부 | Inteface Deque<E> API 읽어보기 (0) | 2021.08.01 |