Java PriorityQueue의 추가 및 제공 방법의 차이점은 무엇입니까?


12

에서 java.util.PriorityQueue 우리는 방법을 가지고 add(E e)offer(E e). 두 방법 모두 다음과 같이 문서화되어 있습니다.

지정된 요소를이 우선 순위 큐에 삽입합니다.

이 두 방법의 차이점은 무엇입니까?

답변:


17

차이점은 크기가 제한된 에 요소를 삽입하지 못하면을 offer()반환 하지만 을 throw한다는 것 입니다.falseadd()IllegalStateException

당신은 사용해야 offer()요소의 삽입 실패가 정상이 될 것입니다 때, 그리고 add()실패 (요구가 처리 될 것을) 뛰어난 발생 될 때.


4

차이점을 찾으려면 PriorityQueue API javadocs 를 따라야합니다. PriorityQueue API javadocsQueue인터페이스의 각 메소드를 독자에게 참조하는 "Specified By"섹션이 있습니다.

  • Queue.add

    삽입은, 용량 제한으로 위반하는 성공했을 경우는 true를 돌려 주어와 않고 곧 실행할 수있는 경우이 큐에 지정된 요소가 있는 공간은 현재 존재하지 않는 경우는 IllegalStateException를 throw ...
    반환 : true(에 의해 지정된 하는 Collection.add (E) )
    예외 : IllegalStateException- 요소가 용량 제한이 원인으로이 시점에서 추가 할 수없는 경우 ...

  • 대기열 제공

    용량 제한을 위반하지 않고 즉시 가능한 경우 지정된 요소를이 큐에 삽입합니다. 용량 제한 큐를 사용하는 경우,이 방법은 예외를 발생 요소의 삽입에 실패 할 수있는, (E)을 첨가하는 것은 일반적으로 바람직하다 ..
    결과 : true요소가 다른, 큐에 추가 된 경우 false...

선언 된 인터페이스로 구현해야하므로 두 메소드가 모두 존재합니다.

PriorityQueue는 바인드되지 않기 때문에 (javadocs : " 우선 순위 힙을 기반으로하는 바인드 되지 않은 우선 순위 큐 ..."에 명시되어 있음 ), 위에서 언급 한 API 디자이너의 환경 설정은 적용되지 않습니다. 이는 특정 사용 상황에서 자신의 요구에 더 잘 맞는 방법을 선택하는 것이 프로그래머의 재량에 달려 있음을 의미합니다.


2
Pffft 당신은 가서 문서를 보았습니다. 약한. ; P
yannis

1
당신이 볼 수 @YannisRizos 다음 일은이 날 것 골 파편처럼 불평 : 오, 당신이 30 초 답변과 경쟁 할 수 없습니다 질문 5 개 답변을 얻을 것이다 당신도 적절한 링크 저쩌구을 찾을 수 있습니다 전에
모기
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.