자바 의 대기 열 사용

5112 단어 자바
방금 그룹 안의 한 친구 가 대열 의 사용 을 묻 는 것 을 보 았 는데, 확실히 현실 적 인 쓰기 코드 에서 대열 을 매우 적 게 사용 하 는 것 을 보 았 다. 어쨌든 나 는 지금까지 사용 한 적 이 없다.그냥 데이터 구 조 를 배 울 때 배 웠 어 요.
다음은 제 가 쓴 작은 사례 입 니 다. 부족 한 점 이 있 으 면 고 쳐 주 십시오.O(∩_∩)O~
코드 보기:
import java.util.LinkedList;
import java.util.Queue;
public class TestQueue
{
/**
* @param args
* @author JavaAlpha
* 정보 테스트 대기 열
*/
public static void main(String[] args)
{
Queue queue = new LinkedList();
queue. offer ("1");/요 소 를 삽입 합 니 다.
queue.offer("2");
queue.offer("3");
//인쇄 요소 개수
System.out.println("queue.size()"+queue.size());
//모든 요 소 를 옮 겨 다 니 며 인쇄 합 니 다. 설치 삽입 은 순서대로 인쇄 합 니 다.
for (String string : queue)
{
System.out.println(string);
}
}
}
인쇄 내용:
queue.size()3
1
2
3
 
다음은 API 에서 대기 열 에 대한 설명 입 니 다.
 
public interface Queue<E>
    
      
extends
Collection
요 소 를 처리 하기 전에 요 소 를 저장 하 는 collection 입 니 다.주요 Collection 작업 을 제외 하고 대기 열 은 다른 삽입, 추출 과 검사 작업 도 제공 합 니 다.모든 방법 에는 두 가지 형식 이 존재 합 니 다. 하 나 는 이상 (조작 실패 시) 을 던 지고 다른 하 나 는 특수 값 (null 또는 false, 상세 한 것 은 조작 에 달 려 있 습 니 다) 을 되 돌려 줍 니 다.삽입 작업 의 다음 형식 은 용량 제한 이 있 는 Queue 를 위해 디자인 한 것 입 니 다.대부분의 구현 에서 삽입 작업 은 실패 하지 않 습 니 다.
 
이상 을 던지다
특수 값 되 돌리 기
끼어들다
add(e)
offer(e)
제거 하 다
remove()
poll()
검사 하 다.
element()
peek()
대기 열 은 보통 (그러나 꼭 그렇지 는 않 습 니 다) FIFO (먼저 나 가기) 방식 으로 각 요 소 를 정렬 합 니 다.다만 우선 순위 대기 열과 LIFO 대기 열 (또는 스 택) 은 예외 이 며 전 자 는 제 공 된 비교 기 나 요소 의 자연 순서에 따라 원 소 를 정렬 하고 후 자 는 LIFO (후진 선 출) 방식 으로 원 소 를 정렬 합 니 다.어떤 정렬 방식 을 사용 하 든 대기 열의 머리 는 호출 remove() 또는 poll() 에서 제거 한 요소 입 니 다.FIFO 대기 열 에 있 는 모든 새 요 소 는 대기 열의 끝 에 삽 입 됩 니 다.다른 종류의 대기 열 은 서로 다른 요소 배치 규칙 을 사용 할 수 있 습 니 다.모든 Queue 구현 은 순서 속성 을 지정 해 야 합 니 다.
가능 하 다 고 가정 하면 offer 방법 은 요 소 를 삽입 할 수 있 습 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다.이것 은 Collection.add 방법 과 달리 이 방법 은 검사 되 지 않 은 이상 을 던 져 서 원 소 를 넣 는 데 실패 할 수 있다.offer 방법 설 계 는 이상 한 상황 이 발생 하 는 것 이 아니 라 정상 적 인 실패 상황 에 사 용 됩 니 다. 예 를 들 어 용량 이 고정 되 어 있 는 대기 열 에 있 습 니 다.
remove()poll() 방법 은 대열 의 머리 를 제거 하고 되 돌 릴 수 있다.도대체 대기 열 에서 어떤 요 소 를 제거 하 는 것 이 대기 열 정렬 정책 의 기능 인지, 이 정책 은 여러 가지 실현 에서 다르다.reove () 와 poll () 방법 은 대기 열 이 비어 있 을 때 만 행동 이 다 릅 니 다. reove () 방법 은 이상 을 던 지고 poll () 방법 은 null 로 돌아 갑 니 다.
element()peek() 는 되 돌아 오지 만, 대열 의 머리 를 제거 하지 않 습 니 다.
Queue 인 터 페 이 스 는 대기 열 을 막 는 방법 을 정의 하지 않 았 습 니 다. 이 는 병렬 프로 그래 밍 에서 흔히 볼 수 있 는 것 이 아 닙 니 다.BlockingQueue 인 터 페 이 스 는 대기 요소 가 나타 나 거나 대기 열 에 사용 가능 한 공간 이 있 는 방법 을 정의 합 니 다. 이 방법 들 은 이 인 터 페 이 스 를 확장 합 니 다.
Queue 구현 은 보통 null 요 소 를 삽입 하 는 것 에 동의 하지 않 습 니 다. 일부 구현 (예 를 들 어 LinkedList 은 null 삽입 을 금지 하지 않 습 니 다.null 의 실현 에 동의 하 더 라 도 null 을 Queue 에 삽입 해 서 는 안 됩 니 다. null 도 poll 방법의 특수 한 반환 값 으로 사용 되 기 때문에 대기 열 에 요 소 를 포함 하지 않 음 을 나타 냅 니 다.
Queue 는 보통 equals 와 hashCode 방법 을 정의 하지 않 는 요소 기반 버 전 번 호 를 실현 합 니 다. Object 류 에서 신분 기반 버 전 번 호 를 계승 합 니 다. 같은 요 소 를 가지 고 있 지만 정렬 속성 이 다른 대기 열 에 있어 요소 기반 의 공통점 이 항상 좋 은 것 은 아 닙 니 다.
 

좋은 웹페이지 즐겨찾기